安装lxml
pip install lxml
代码
import requests from bs4 import BeautifulSoup as bs import time import lxml url = "https://bbs.hupu.com/bxj-postdate" useragent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" header = { 'user-agent': useragent, # 虎扑从第11页开始就必须登录才能查看 # 从浏览器端登录后直接复制cookie,会过时,以后运行还得重新复制一遍。 'cookie': 'your cookie' } for page in range(0,50): page_url = url + '-' + str(page+1) print(f'------------------ 第{page+1}页内容 {page_url}-------------------') response = requests.get(page_url, headers=header) last = time.time() selector = lxml.etree.HTML(response.text) ul_li = selector.xpath('//*[@id="ajaxtable"]/div[1]/ul/li') for li in ul_li: item = {} # 标题 title_box = li.xpath('./div[@class="titlelink box"]')[0] item['link'] = hupu_domin + title_box.xpath('./a[@class="truetit"]/@href[1]')[0] # 测试发现有些标题会用<b>标签包裹(具体见下一个单元格),需要特殊处理 if title_box.xpath('./a[@class="truetit"]/text()'): item['text'] = title_box.xpath('./a[@class="truetit"]/text()')[0] else: item['text'] = '【加重】:' + title_box.xpath('./a[@class="truetit"]/b/text()')[0] # 作者 autoor_box = li.xpath('./div[@class="author box"]')[0] item['author'] = autoor_box.xpath('./a[@class="aulink"]/text()')[0] # 发帖时间 item['date'] = autoor_box.xpath('./a[2]/text()')[0] print(item) now = time.time() print(f'耗时{now-last}') time.sleep(1)
结果展示
------------------ 第1页内容 https://bbs.hupu.com/bxj-postdate-1------------------- 117 {'link': 'https://bbs.hupu.com/36406828.html', 'text': '高考数学毁在了硬件上', 'author': '天魔王织田信长', 'date': '2020-07-07'} {'link': 'https://bbs.hupu.com/36406825.html', 'text': '理性讨论,周王陶林和罗大佑,李宗盛,朴树,汪峰哪组创作能力更强', 'author': '上单国服凯', 'date': '2020-07-07'} {'link': 'https://bbs.hupu.com/36406824.html', 'text': '数学全国二我傻了', 'author': '我只喜欢万茜', 'date': '2020-07-07'} {'link': 'https://bbs.hupu.com/36406822.html', 'text': '晚上要去面试古茗的兼职,大伙有什么想要提醒一下的吗?', 'author': '重理工安东尼', 'date': '2020-07-07'} ... {'link': 'https://bbs.hupu.com/36404667.html', 'text': '2020年高考十大热搜专业zt', 'author': '小_熊', 'date': '2020-07-07'} {'link': 'https://bbs.hupu.com/36404666.html', 'text': '男生怎么看女生有纹身?', 'author': '三毛和Echo', 'date': '2020-07-07'} 耗时0.09512805938720703 ... ... ... ------------------ 第50页内容 https://bbs.hupu.com/bxj-postdate-50------------------- 101 {'link': 'https://bbs.hupu.com/36390301.html', 'text': '明天高考了,jrs留下一句对高三学子的祝福吧!', 'author': '超Carry的淳希', 'date': '2020-07-06'} {'link': 'https://bbs.hupu.com/36390297.html', 'text': 'a股日涨6%居然没人讨论?', 'author': 'mcskyward', 'date': '2020-07-06'} {'link': 'https://bbs.hupu.com/36390296.html', 'text': '烧饼应该是郭德纲追着给饭吃', 'author': '千禧基地', 'date': '2020-07-06'} {'link': 'https://bbs.hupu.com/36390290.html', 'text': '话说中信银行校招的底薪一般啊,中信不是银行中收入高的那一批吗', 'author': 'nene我内人', 'date': '2020-07-06'} {'link': 'https://bbs.hupu.com/36390287.html', 'text': '高铁上居然发现两个男的在干这种事?', 'author': '超级打架王', 'date': '2020-07-06'} ... ... ... {'link': 'https://bbs.hupu.com/36389948.html', 'text': '兄弟萌求一张97版慕容复演员的动图', 'author': '圗弼', 'date': '2020-07-06'} {'link': 'https://bbs.hupu.com/36389943.html', 'text': '兄弟们,明天高考了今天买考试用品花了66.6什么水平', 'author': '高中毕业就退休', 'date': '2020-07-06'} 耗时0.0585782527923584
Python学习扣QUN:(60-1153-105)从零基础开始到Python各领域的项目实战教程、开发工具与电子书籍。与你分享企业当下对于python人才需求及学好python的高效技巧,不停更新最新教程!