【Python爬虫】-第四期课后练习16

主体代码和老师提供差不多,就是将分页封装了方法,通过递归方式调用


import requests
from lxml import etree
import json

# 一、抓取首页-资讯菜单下面13个频道名称 url
# 二、分析每个频道页的全部资讯抓取策略
# 在20题的基础上抓取每个频道每个资讯的标题 资讯的内容详情


def haha(page,item):
post_url='https://www.huxiu.com/channel/ajaxGetMore'
channel_name=item['channel_name']
catId=item['catId']
post_data={
'huxiu_hash_code':'18f3ca29452154dfe46055ecb6304b4e',
'page':page,
'catId':catId
}
html=requests.post(post_url,data=post_data,headers=headers).text
dict_data=json.loads(html)
parse_data=dict_data['data']
total_page=parse_data['total_page']
data=parse_data['data']
# print(data)
selector=etree.HTML(data)
article_urls=selector.xpath('//a/@href')
for article_url in article_urls:
if article_url.startswith('/article'):
article_url=root_url+article_url
print(channel_name, catId, total_page, page, article_url)
if(total_page>int(page)):
page = int(page)+1
haha(page,item)
else:
pass


root_url='https://www.huxiu.com'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',
}
html=requests.get(root_url,headers=headers).text
selector=etree.HTML(html)
zixun_infos=selector.xpath('//ul[@class="header-column header-column1 header-column-zx menu-box"]/li/a')
items=[]
for info in zixun_infos:
item={}
channel_name=info.xpath('text()')[0]
catId=info.xpath('@href')[0].replace('/channel/','').replace('.html','')
# print(channel_name,catId)
item['channel_name']=channel_name
item['catId']=catId
items.append(item)
for item in items:
haha('1',item)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,581评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 你不在的时候,我在思考什么能让时间过得快一点。
    炊新烟阅读 159评论 0 0
  • 她说 首先声明,我没病,都是我身边的人非要给我加这么个罪名,好像这样我就可以成全他们的心愿去自杀一样,好吧,其实也...
    TiNY_u阅读 533评论 0 0