【发布时间】:2020-04-13 20:44:37
【问题描述】:
我正在尝试使用 Beautifulsoup4 抓取 farefetch.com (https://www.farfetch.com/ch/shopping/men/sale/all/items.aspx?page=1&view=180&scale=282),但我无法找到 已解析 文本(转储到soup.html) 就像在浏览器中的开发工具视图中一样(使用 CTRL + F 搜索匹配的字符串时)。
我的代码没有任何问题,但毫无疑问是:
#!/usr/bin/python
# imports
import bs4
import requests
from bs4 import BeautifulSoup as soup
# parse website
url = 'https://www.farfetch.com/ch/shopping/men/sale/all/items.aspx?page=1&view=180&scale=282'
response = requests.get(url)
page_html = response.text
page_soup = soup(page_html, "html.parser")
# write parsed soup to file
with open("soup.html", "a") as dumpfile:
dumpfile.write(str(page_soup))
当我将soup.html 文件拖到浏览器中时,所有内容都会按原样加载(就像真实的url)。我认为这是对解析的某种保护?我试图放入一个连接标头,它告诉另一端的网络服务器我正在从真正的浏览器请求这个,但它也没有工作。
- 以前有没有人遇到过类似的情况?
- 有没有办法获得浏览器中显示的真实 html?
当我在浏览器中搜索想要的内容时,它(显然)出现了......
这里将解析后的 html 保存为“soup.html”。无论如何我搜索 (CTRL+F) 或 bs4 函数 find_all() 或 find() 或其他任何方法,都找不到我要查找的内容。
【问题讨论】:
-
该页面几乎可以肯定地使用 Javascript 来动态操作 DOM 对象(添加类、样式、标签..) - 而
BeautifulSoup不执行 JavaScript。您需要从页面中获取哪些信息? -
在“网络”面板中搜索。这会告诉你它是否真的在回应中。
-
嗨,安德烈,感谢您的回答。我想为每个在售(折扣)的产品解析产品参数(如名称、图片链接、详细信息页面链接、价格等)......关于如何实现这一点的任何想法? @AndrejKesely
标签: python-3.x web-scraping web-applications beautifulsoup html-parsing