Python爬虫日记

蹲街弑〆低调 提交于 2020-02-02 05:11:14

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)
   
  • 结果查看
    在这里插入图片描述

这样就得到了我们需要的信息。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!