用pyppeteer来爬取zol笑话大全

2025-10-18 14:45:04

1、首先打开zol笑话大全网址http://xiaohua.zol.com.cn/lengxiaohua/,按f12打开开发者模式,然后定位笑话段子的元素如图:

用pyppeteer来爬取zol笑话大全

用pyppeteer来爬取zol笑话大全

2、从图中可以看出段子的标题藏在li标签下的a标签中,段子的内容藏在第二个div标签下,接下来就好办了。因为pyppeteer这个模块的妙处,你可以不用设置爬虫的代理或者是header就可以直接干了。

3、接下来上代码:

from pyppeteer import launch

import asyncio

import re

from lxml import etree

async def gettxt(i):

browser=await launch()#没有参数默认开启无头模式

page=await browser.newPage()#新建一个网页

await page.goto('http://xiaohua.zol.com.cn/lengxiaohua/'+str(i)+'.html')

page_source=await page.content()

return page_source

def callback(future):

page_source=future.result()

tree=etree.HTML(page_source)

li_list=tree.xpath('//li[@class="article-summary"]')

for i in li_list:

title=i.xpath('.//span[@class="article-title"]/a/text()')

txt=str(i.xpath('.//div[@class="summary-text"]/p/text()')).replace('\\n\\t','')

print(title)

print(txt)

print('+'*50)

for i in range(1,11):

coroutine=gettxt(i)

loop=asyncio.get_event_loop()

task=asyncio.ensure_future(coroutine)

task.add_done_callback(callback)

loop.run_until_complete(task)

4、代码测试结果如下,喜欢的可以自己动手尝试一下。

用pyppeteer来爬取zol笑话大全

1、await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299'):用来设置header

await page.setViewport({'width':width,'height':height}):用来设置整个页面

一些基本的网站一般是检测webdriver的,但是设置了以下的其中一个代码就不会被检测出来了:

await page.evaluate('''() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }''')

await page.evaluate('''() =>{ window.navigator.chrome = { runtime: {}, }; }''')

await page.evaluate('''() =>{ Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] }); }''')

await page.evaluate('''() =>{ Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5,6], }); }''')

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢