Pythont通过request以及BeautifulSoup爬取几千条情话
生活随笔
收集整理的這篇文章主要介紹了
Pythont通过request以及BeautifulSoup爬取几千条情话
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
這里要爬取情話的網站:
https://www.duanwenxue.com/huayu/tianyanmiyu/list_69.html
我們分析情話所存取的位置
首先是在class屬性為list-short-article的div元素中
然后在其下面是列表,每條下的a標簽的text即為我們要爬取的情話內容,且每個a標簽的target屬性為_blank。
這樣只能爬取當前靜態網頁的情話內容,我們可以分析這個網站的url
第69頁
https://www.duanwenxue.com/huayu/tianyanmiyu/list_69.html
第70頁
https://www.duanwenxue.com/huayu/tianyanmiyu/list_70.html
可以看到url的前面部分是一致的,只有后面的數字是跟頁數是對應的
實現
新建文件夾,在此文件夾下新建get_data.py
代碼如下,注釋已經講的很全
import os #導入request庫 import requests #導入Beautiful Soup庫 from bs4 import BeautifulSoup as BS#定義獲取數據的方法 def Get_data():#設置請求頭headersheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36','cookie': 'acw_tc=6f3e47cc15498749418558688e3d6410ea97be9a552b180841c5079605; PHPSESSID=s2hjdg3slh32omchfsib4himk0; UM_distinctid=168dbbfe8c533e-0e42df11c1c0a7-9393265-100200-168dbbfe8c71088; CNZZDATA1256319371=345851669-1549873534-%7C1549873534; CNZZDATA1257119496=134880590-1549870452-%7C1549870452; Hm_lvt_a48e6ab107a4e68d47e6fdb5d83961e5=1549875015; Hm_lvt_3c8ecbfa472e76b0340d7a701a04197e=1549875021; CNZZDATA1254708131=653924416-1549874976-%7C1549874976; CNZZDATA1275922735=1673340420-1549874690-%7C1549874690; CNZZDATA1257131565=1820590917-1549873827-%7C1549873827; CNZZDATA1257125147=1301871275-1549871347-https%253A%252F%252Fwww.duanwenxue.com%252F%7C1549871347; Hm_lpvt_a48e6ab107a4e68d47e6fdb5d83961e5=1549875906; Hm_lpvt_3c8ecbfa472e76b0340d7a701a04197e=1549875913; ajax_award_timestamp=1549875887; ajax_award_timestamp__ckMd5=706904497e9c8dfd; ajax_award_key=94a17405d22ab8aacbabbbfdb9d4740c; ajax_award_key__ckMd5=3e97bde02ab1998d','referer': 'https://www.duanwenxue.com/huayu/tianyanmiyu/list_69.html','upgrade-insecure-requests' : '1',}#根據url中最后數字的不同循環獲取情話并調用parse_text寫入文件for i in range(1,70):#使用format可以將i作為占位符的{}里面的內容并填入url = 'https://www.duanwenxue.com/huayu/tianyanmiyu/list_{}.html'.format(i)#調用requests的get方法爬取內容response = requests.get(url,headers=headers)#調用parse_text方法來解析網頁內容parse_text(response.text)def parse_text(text):articles = []if text:#使用lxml解析器,常用的解析html的解析器soup = BS(text,'lxml')#調用find方法來首先找到class為list-short-article的div元素再找到target屬性為blank的a標簽arttis = soup.find('div', class_='list-short-article').find_all('a', {'target': "_blank"})#這里是通過列表推導式以及for循環獲取到每個a標簽里面的text內容并通過strip去除空格articles = [arttis[i].text.strip() for i in range(len(arttis)) ]#將解析后的網頁內容存放在text文件中#a:表示打開一個文件用于追加。如果該文件已經存在,文件指針會放在文件末尾,也就是說文件內容會被寫入到已有內容之后#如果該文件不存在,創建新文件進行寫入with open('Love_words.txt','a',encoding='utf-8') as f:for i in articles:#每一條內容后面追加換行符f.write(i+'\n')if __name__ == '__main__':os.remove('Love_words.txt')Get_data()?
運行效果
?
源碼以及情話下載
https://download.csdn.net/download/badao_liumang_qizhi/10958393
總結
以上是生活随笔為你收集整理的Pythont通过request以及BeautifulSoup爬取几千条情话的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从实例入手学会BeautifulSoup
- 下一篇: tomcat启动时提示Failed to