【问题标题】:web scraping with python and BeautifulSoup使用 python 和 BeautifulSoup 进行网页抓取
【发布时间】:2020-08-09 05:21:58
【问题描述】:

我正在尝试从网站中提取数据并且数据在表格中:

url=requests.get("xxxxx")
soup =BeautifulSoup(url.content)
table=soup.find_all("table")[0]
rows = table.find_all('tr')

我尝试了这段代码,但它只提取了 42 行并且源表包含 220 行? 有人告诉我如何解决这个问题。

【问题讨论】:

    标签: python web-scraping html-table beautifulsoup web-crawler


    【解决方案1】:

    欢迎。
    2种可能性。 Javascript 或网站安全。

    requests 与 javscript 无关,不执行任何 javascript 代码。您将需要一个更接近于模仿浏览器的无头浏览器解决方案(selenium 很受欢迎),尤其是在涉及 javascript 时。

    许多网站不想被抓取并采用不同的方法来防止它。最简单的形式是检查客户端的User-Agent 值(您的Python 脚本)或速率限制(每秒刷新20k 不是人为的)。例如,如果User-Agent 不是known value,它的行为会有所不同(很少或没有数据)。其他形式的防御更为复杂。例如尝试在“浏览器”上播放音频或轮询“浏览器”的分辨率。为此,您需要调查网站的行为。这可能需要时间。您可以从浏览器开发工具的Networking 选项卡(Firefox 上的 F12)或Zap Proxy 开始进行更精细的控制。

    【讨论】:

    • 我使用了 selenium 的 webdriver,但它返回的结果相同。第二种可能性我不太清楚我必须做什么?
    • @kloud 您想调查网站在正常使用期间的行为,并将其与使用脚本访问时的行为进行比较。这意味着,轮询您的浏览器与脚本发出的请求类型。浏览器与您的脚本得到什么类型的响应。依此类推,直到您设法找到该特定站点的防御措施。它是如何检测到你的脚本的?对此没有“一站式”解决方案。每次都可能不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2021-01-31
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多