ZHANG H. 2021-03-29 11:19 采纳率: 100%
浏览 795
已采纳

python的requests爬虫返回了与原网页内容不符的javascript,如何解决?

我的课程作业需要爬取这个网址(http://guba.hzzkzx.com/list,002603,f_1.html)的数据,但是这个网站可能是有反爬虫机制,返回的不是原网页的内容,而是一个html,里面是带有这个网址的javascript。请问这个网站的反爬虫机制是怎样的?如何绕过?

程序源代码:

import requests
from bs4 import BeautifulSoup

headers={
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Connection': 'keep-alive',
    'Cookie': '__guid=84635791.2115898957883613700.1616987444460.9778; monitor_count=1',
    'DNT': '1',
    'Host': 'guba.hzzkzx.com',
    'Referer': 'http://guba.hzzkzx.com/list,002603,f_1.html',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}

def get_data(url):
    html=requests.get(url,headers=headers)
    soup=BeautifulSoup(html.text,'lxml')
    print(soup.prettify())

if __name__=='__main__':
    url="http://guba.hzzkzx.com/list,002603,f_1.html"
    get_data(url)

运行结果:

<html>
 <head>
  <script type="text/javascript">
   function f(){window.location.href="http://guba.hzzkzx.com/list,002603,f_1.html";}
  </script>
 </head>
 <body onload="f()">
  <img src="http://tieba.baidu.com/_PXCK_77735440797141500_1558696096.gif" style="display:none"/>
 </body>
</html>
  • 写回答

3条回答 默认 最新

  • 关注

    异步加载的问题, 可以使用selenium 工具包进行爬取, 可参考:

    import pandas as pd
    import numpy as np
    import time
    from selenium import webdriver
    driver = webdriver.Chrome()
    
    url = 'http://guba.hzzkzx.com/list,002603,f_1.html'
    driver.get(url)
    driver.implicitly_wait(10)
    
    # 标题
    names =  driver.find_elements_by_css_selector('#articlelistnew > div > span.l3.a3')
    for i in names:
        print(i.text)
    标题
    求你跌停,大家都亏欠就完事
    已经给你们上车的机会了!
    刚才难道是诱多吗
    无量上涨后期看跌
    无量杀
    庄控制的真高,收盘又是开盘价
    以岭药业漫长的心电图模式,将持续下跌,合理价15元
    久横必跌,机会来了
    走势也就这样了,草图。
    破不了60日线的压力位!!!
    可怜可悲可叹可恨,浪费行情,累!
    大盘红火,以岭拉稀,赶紧出台年报大分红吧,这么好基

    需要先安装浏览器驱动等一些设置, 可搜索一些相关的帖子.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?