源代码格式相同的页面为什么爬虫抓取的数据数目不同?

发布于 2022-09-05 08:59:08 字数 845 浏览 16 评论 0

1 在翻页爬取不同页面的数据时,发现每页的源代码是相同的,但是用同一个抓取方法抓取的数据为什么个数不同,有的是全部的40条,有的只有29条。不知道是反爬虫的原因还是怎么回事,求指教。

2 代码如下:

import time
import re
import requests
import random
from bs4 import BeautifulSoup

url1 = 'http://yanbao.stock.hexun.com/listnews1_1.shtml'
url2 = 'http://yanbao.stock.hexun.com/listnews1_2.shtml'
url3 = 'http://yanbao.stock.hexun.com/listnews1_3.shtml'
info = requests.get(url1).content
soup = BeautifulSoup(info,'lxml')

stock = [i.string.split(':')[0] for i in soup.find_all('a',class_ = 'fxx_wb')]

print(len(stock))

抓取的元素是红色部分,即股票的代码

clipboard.png

3 结果:在url1和url2中都能抓40条(全部数目),在url3只有29,其余的有些是40,也有很大一部分小于40,自己观察了一下好像代码格式都是相同的,但是为什么出现这种情况,请问原因,和如何处理? 谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如若梦似彩虹 2022-09-12 08:59:08

个人猜测的话可能是ajax的异步加载导致的,可能程序执行的太快,一些数据值返回了,一些还在加载。
有些网站点击下一页是整个刷新界面,有些只是刷新下一页数据,页面其他元素并不改变,不知道你抓的网页是什么情况。

若能看破又如何 2022-09-12 08:59:08
import requests
from pyquery import PyQuery as Q

urls = [
    'http://yanbao.stock.hexun.com/listnews1_1.shtml',
    'http://yanbao.stock.hexun.com/listnews1_2.shtml',
    'http://yanbao.stock.hexun.com/listnews1_3.shtml'
]

for url in urls:
    r = requests.get(url)
    q = Q(r.text)
    lst = [q(_).text().split(':')[0] for _ in q('table.tab_cont a.fxx_wb')]
    print lst
    
    

clipboard.png

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文