【问题标题】:Why can't I scrape using beautiful soup?为什么我不能用漂亮的汤刮?
【发布时间】:2020-01-23 11:50:00
【问题描述】:

我需要从这个网站上刮取唯一的表:https://core.ap.gov.in/CMDashBoard/UserInterface/eAgriculture/eAgricultureVillagewise.aspx?mandal=Agali&district=Anantapuramu

我用了漂亮的汤和请求,但没有成功。你们能建议我哪里出错了吗?

mandal_url = "https://core.ap.gov.in/CMDashBoard/UserInterface/eAgriculture/eAgricultureVillagewise.aspx?mandal=Agali&district=Anantapuramu"
r = requests.get(mandal_url, verify=False).content
soup = bs4.BeautifulSoup(r, 'lxml')
df = pd.read_html(str(soup.find('table',{"id":"gvAgricultureVillage"})))

我在数据框中收到“找不到页面”。我不知道我哪里错了!

【问题讨论】:

  • 分解你的函数,这样你就可以更容易地调试它。 get 函数是否返回 200? soup.find(...)等的输出是什么
  • 即使在 r 中我也没有得到表值!汤什么也没给我。
  • get 函数返回一些文本。但是该文本中没有表格值

标签: python beautifulsoup python-requests


【解决方案1】:

该页面可能需要某种登录方式。通过点击链接自己查看,我得到

您需要在请求中添加 cookie / 一些其他标头才能显示“已登录”。

【讨论】:

  • 我认为该页面只能在印度访问。不过,感谢您的尝试!
  • 这里的用户模型垫是正确的。我目前在印度,也无法查看该页面。您必须在代码中添加特定的标头和授权配置才能使您的用例正常工作。
【解决方案2】:

尝试点击您尝试从无效链接中抓取的链接。当我单击您提供的链接或您存储在mandal_url 中的链接时,两者都会返回“找不到页面”页面。因此,您以正确的方式进行抓取,但是您提供 to 抓取器的 url 无效/不再可用。

【讨论】:

  • 哦!它在我的电脑上运行。我刚才点击了。我不知道。也许它在印度以外无法访问。
【解决方案3】:

我无法访问该网站。但是您可以使用以下方式直接阅读网页上的表单:

dfs = pd.read_html(your_url, header=0) 

如果url需要认证,可以通过以下方式获取表单:

r = requests.get(url_need_authentivation, auth=('myuser', 'mypasswd'))
pd.read_html(r.text, header=0)[1]

这将简化您的代码。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2020-06-14
    • 2017-08-15
    • 1970-01-01
    • 2018-05-22
    • 2013-11-08
    相关资源
    最近更新 更多