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(): #设置请求头headers headers = { '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 |
CopyRight 2018-2019 实验室设备网 版权所有 |