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

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条)

报告相同问题?

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆