前言
首先,我们来回忆一下上篇爬虫实战讲了什么:讲到了requests和bs4和一些网页基本操作。如果有不熟悉的朋友可以去看看:
今天我们用re模块+requests来实战爬取一下,并写入TXT文件中,效果图如下:
实战
我们今天来爬取一下5200小说网的小说“罗大陆3龙王传说”并写入TXT文件中,我们先分析一下章节网址的规律:
http://www.5200xs.org/52002847/1081834.html
http://www.5200xs.org/52002847/1081835.html
从而得知规律是网址数字的增加。
步骤:
1.先获取网页数据,用requests获取,这个大家都会吧?上篇实战文章已经讲过了,这里的url我们一会再赋值:
importrequests
defget_data(url):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}
data = requests.get(url,headers=headers)
# 因为直接请求出来的是乱码,所有设置一下编码格式
data.encoding ="gbk"
print(data.text)
2.根据re模块去提取你想要的信息-标题和内容
首先先讲一下符号 (.*?)的用法,就是表示匹配xx和xx间的任何字符。用法就是‘xx(.*?)xx’
标题:
获取代码:
title= re.findall('(.*?)', data.text, re.S)
内容:
获取代码:
content= re.findall('
(.*?)
', data.text, re.S)
获取之后会有各种的符号,我们可以把它代替出来:
ifcontent.__len__()>0:
str = content[].replace(" ","").replace("
","")
3.就是通过循环依次获取当前的网页数据,并写入TXT文件中。
完整代码如下:
importrequests
importre
#创建TXT文件,其中的"a+"是一种模式,表示用于读写,追加模式。
f = open("C:/Users/Administrator/Desktop/qi.txt","a+")
defget_data(url):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}
data = requests.get(url,headers=headers)
# 因为直接请求出来的是乱码,所有设置一下编码格式
data.encoding ="gbk"
#获取网页数据成功
ifdata.status_code==200:
title = re.findall('(.*?)', data.text, re.S)#标题
content = re.findall('
(.*?)
', data.text, re.S)#内容
ifcontent.__len__()>andtitle.__len__()>:
str =title[]+"\n\n"+ content[].replace(" ","").replace("
","")#标题和内容拼在一起
f.write(str)#写入TXT
#获取失败
else:
pass
if__name__ =='__main__':
#这里为了给大家演示,只是取了前一百章
urls = ["http://www.5200xs.org/52002847/{}.html".format(str(i))foriinrange(1081834,1081933)]
foriinurls:
get_data(i)
f.close()
希望对刚入门的朋友有所帮助!
领取专属 10元无门槛券
私享最新 技术干货