python爬虫日记
正则表达式爬取内容
- 分析网站url可以看见网页的翻页是根据后面的
参数p=1
确定,可以根据网页的url可以得到所有的网页信息
-
爬取目标
得到小说的排名,书名,原文链接,作者,字数,点击量,和更新时间的信息 -
分析网站的html代码可以看到我们需要的信息
-
代码展示
# 引入我们需要的python库
import requests
from requests.exceptions import RequestException
import re
import json
# 发送http请求的函数
def get_one_page(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
return '失败'
# pattern是定义的正则表达式,可以获取到我们的信息
def parse_one_page(html):
pattern = re.compile('.*?num">(\d+)</li>.*?bookname">.*?bn.*?href="(.*?)">(.*?)</a>?.*?author">(.*?)</li>.*?length">(\d+).*?click">(\d+).*?update">(.*?)</li>?',re.S)
items = re.findall(pattern,html)
for item in items:
yield {
'排行': item[0],
'书名': item[2],
'链接': item[1],
'作者': item[3],
'字数': item[4],
'点击': item[5],
'更新时间': item[6]
}
# 定义写文件的函数,有数据库的可以写进数据库 ‘a’是追加的方式 encoding='utf-8'是定义写入文件汉字的编码格式,ensure_ascii=False 是保证我们写入的汉字不会被编码
def write_to_file(content):
with open('result.txt','a',encoding='utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False) + '\n')
f.close()
def main(p):
url = 'http://top.hengyan.com/mianfei/default.aspx?p=' + str(p)
html = get_one_page(url)
for item in parse_one_page(html):
print(item)
write_to_file(item)
if __name__ == '__main__':
for i in range(4):
main(i+1)
- 结果查看
这样就得到了我们需要的信息。
来源:CSDN
作者:FS_developer
链接:https://blog.csdn.net/qq_43613965/article/details/104136811