博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
糗百热点爬虫
阅读量:5931 次
发布时间:2019-06-19

本文共 2929 字,大约阅读时间需要 9 分钟。

1 # -*- coding:utf-8 -*- 2 # Author:Sure Feng 3  4 import requests 5 from lxml import etree 6 import json 7  8  9 class QiubaiSpider(object):10     def __init__(self):11         self.tempt_url = "https://www.qiushibaike.com/8hr/page/{}/"12         self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"}13 14 def parse_url(self, url):15 """发送请求,获取响应"""16 respond = requests.get(url, self.headers)17 return respond.content.decode()18 19 def get_content(self, html_str, num):20 """提取数据"""21 html = etree.HTML(html_str)22 div_list = html.xpath("//div[@id='content-left']/div") # 分组23 content_list = []24 for div in div_list:25 item = {}26 item["page"] = num27 item["content"] = div.xpath(".//div[@class='content']/span/text()")28 item["content"] = [i.replace("\n","") for i in item["content"]]29 item["author_gender"] = div.xpath(".//div[contains(@class, 'articleGender')]/@class")30 item["author_gender"] = item["author_gender"][0].split(" ")[-1].replace("Icon", "") if len(item["author_gender"])>0 else None31 item["age"] = div.xpath(".//div[contains(@class, 'articleGender')]/text()")32 item["age"] = item["age"][0] if len(item["age"])>0 else None33 item["content_img"] = div.xpath(".//div[@class='thumb']/a/img/@src")34 item["content_img"] = "https" + item["content_img"][0] if len(item["content_img"])>0 else None35 item["author_img"] = div.xpath(".//div[@class='author clearfix']//img/@src")36 item["author_img"] = "https:" + item["author_img"][0] if len(item["author_img"])>0 else None37 item["stats_vote"] = div.xpath(".//span[@class='stats-vote']/i/text()")38 item["stats_vote"] = item["stats_vote"][0] if len(item["stats_vote"])>0 else None39 content_list.append(item)40 return content_list41 42 def save_conten(self, content_list):43 """保存"""44 with open("qiubai.txt", "a", encoding="utf-8") as f:45 for content in content_list:46 f.write(json.dumps(content, ensure_ascii=False, indent=4))47 f.write("\n")48 print("保存成功")49 50 def run(self): # 实现主要逻辑51 # 获取URL列表,遍历列表52 start_url = [self.tempt_url.format(i) for i in range(1, 14)]53 num = 154 for url in start_url:55 # 发送请求,获取响应56 html_str = self.parse_url(url)57 # 提取数据58 content_list = self.get_content(html_str, num)59 # 保存60 self.save_conten(content_list)61 num += 162 63 64 if __name__ == '__main__':65 qiubai_spider = QiubaiSpider()66 qiubai_spider.run()

 

转载于:https://www.cnblogs.com/sure-feng/p/10066845.html

你可能感兴趣的文章
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
快速排序——Java
查看>>
unity游戏与我
查看>>
187. Repeated DNA Sequences
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
行列式的乘法定理
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
MySQL 5.6为什么关闭元数据统计信息自动更新&统计信息收集源代码探索
查看>>
apache prefork模式优化错误
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
JS页面刷新保持数据不丢失
查看>>
清橙A1202&Bzoj2201:彩色圆环
查看>>
使用data pump工具的准备
查看>>