国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬取網頁轉換為PDF文件

2020-02-15 21:42:36
字體:
來源:轉載
供稿:網友

爬蟲的起因

官方文檔或手冊雖然可以查閱,但是如果變成紙質版的豈不是更容易翻閱與記憶。如果簡單的復制粘貼,不知道何時能夠完成。于是便開始想著將Android的官方手冊爬下來。

全篇的實現思路

    分析網頁 學會使用BeautifulSoup庫 爬取并導出

參考資料:

* 把廖雪峰的教程轉換為PDF電子書
* Requests文檔
* Beautiful Soup文檔

配置

在Ubuntu下使用Pycharm運行成功
轉PDF需要下載wkhtmltopdf

具體過程

網頁分析

如下所示的一個網頁,要做的是獲取該網頁的正文和標題,以及左邊導航條的所有網址

接下來的工作就是找到這些標簽嘍…

關于Requests的使用

詳細參考文檔,這里只是簡單的使用Requests獲取html以及使用代理翻墻(網站無法直接訪問,需要VPN)

proxies={ "http":"http://vpn的IP:port", "https":"https://vpn的IP:port", }response=requests.get(url,proxies=proxies)

Beautiful Soup的使用

參考資料里面有Beautiful Soup文檔,將其看完后,可以知道就講了兩件事:一個是查找標簽,一個是修改標簽。
本文需要做的是:

1. 獲取標題和所有的網址,涉及到的是查找標簽

#對標簽進行判斷,一個標簽含有href而不含有description,則返回true#而我希望獲取的是含有href屬性而不含有description屬性的<a>標簽,(且只有a標簽含有href)def has_href_but_no_des(tag): return tag.has_attr('href') and not tag.has_attr('description')#網頁分析,獲取網址和標題def parse_url_to_html(url): response=requests.get(url,proxies=proxies) soup=BeautifulSoup(response.content,"html.parser") s=[]#獲取所有的網址 title=[]#獲取對應的標題 tag=soup.find(id="nav")#獲取第一個id為"nav"的標簽,這個里面包含了網址和標題 for i in tag.find_all(has_href_but_no_des): s.append(i['href']) title.append(i.text) #獲取的只是標簽集,需要加html前綴 htmls = "<html><head><meta charset='UTF-8'></head><body>" with open("android_training_3.html",'a') as f: f.write(htmls)

對上面獲取的網址分析,獲取正文,并將圖片取出存于本地;涉及到的是查找標簽和修改屬性

#網頁操作,獲取正文及圖片def get_htmls(urls,title): for i in range(len(urls)): response=requests.get(urls[i],proxies=proxies) soup=BeautifulSoup(response.content,"html.parser") htmls="<div><h1>"+str(i)+"."+title[i]+"</h1></div>" tag=soup.find(class_='jd-descr') #為image添加相對路徑,并下載圖片 for img in tag.find_all('img'):  im = requests.get(img['src'], proxies=proxies)  filename = os.path.split(img['src'])[1]  with open('image/' + filename, 'wb') as f:  f.write(im.content)  img['src']='image/'+filename htmls=htmls+str(tag) with open("android_training_3.html",'a') as f:  f.write(htmls) print(" (%s) [%s] download end"%(i,title[i])) htmls="</body></html>" with open("android_training_3.html",'a') as f: f.write(htmls)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 布拖县| 绥宁县| 庄河市| 弋阳县| 宁河县| 黎平县| 浮梁县| 洱源县| 漳平市| 鄢陵县| 云龙县| 曲周县| 威海市| 六枝特区| 永年县| 滁州市| 九江市| 巴青县| 三亚市| 田阳县| 新建县| 乐都县| 青河县| 田林县| 黔南| 绥阳县| 凤庆县| 西乌珠穆沁旗| 桃园县| 苗栗县| 井冈山市| 锡林浩特市| 沙河市| 定襄县| 老河口市| 白银市| 西乌珠穆沁旗| 句容市| 县级市| 兰溪市| 来宾市|