【问题标题】:BeautifulSoup url scrapingBeautifulSoup 网址抓取
【发布时间】:2015-05-25 13:44:33
【问题描述】:

第一次尝试 BeautifulSoup。

我有这个链接http://www.mediafire.com/download/alv8dq6k35n4m2k/For+You.zip

我想从下载按钮获取直接下载网址
http://download2110.mediafire.com/niz8p9iu6r9g/alv8dq6k35n4m2k/For+You.zip

到目前为止我已经尝试过什么。

r = requests.get(url)
soup = BeautifulSoup(r.content)
links = soup.findAll('a')

我认为最后一个函数findAll('a')会找到该页面的所有链接,但我在linkslist 中找不到直接下载网址。

我在这里做错了吗?如果是这样,我怎样才能用beautifulsoup 抓住那个链接。我检查了 Chrome 开发者控制台中的元素,发现链接在那里。

【问题讨论】:

  • 它是使用javascript生成的,所以在请求获取html时不可见
  • 那是否意味着无法获取该链接?

标签: python request web-scraping beautifulsoup


【解决方案1】:

你可以试试这个从javascript中提取url:

from bs4 import BeautifulSoup

import requests

r = requests.get("http://www.mediafire.com/download/alv8dq6k35n4m2k/For+You.zip")

soup = BeautifulSoup(r.content)

link = soup.find("div",{"class":"download_link"})
import re

url = re.findall("http.*.zip?",link.text)[0]

【讨论】:

  • 天才!我从没想过先瞄准 div 然后从那里往下走。谢谢。
  • 奇怪。我在这里错过了什么吗?我立即按照您的步骤运行代码,它运行良好。但是大约一分钟后,link 列表为无。它仍然对你有用吗? File "test.py", line 12, in <module> url = re.findall("http.*.zip?",link.text)[0] AttributeError: 'NoneType' object has no attribute 'text'
  • @Zip,是的,但是您可以提出请求的次数是有限制的,如果您超过它,您将不得不等待几分钟。要保存 zip 吗?
  • 哦。它是由 mediafire 服务器设置的吗?无论如何要克服它?不,我不想保存它。这只是一个测试。但是从 Chrome 浏览器发送的请求似乎可以正常工作。我没有验证码。
  • 我敢打赌,如果您使用浏览器,您会看到一个验证码,所以我认为更改您的 ip 不会有一个简单的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
相关资源
最近更新 更多