【发布时间】:2019-04-05 17:14:00
【问题描述】:
我想使用网络抓取来提取有关学生住宿网站 uniplaces 列表的信息。这是一个示例列表:https://www.uniplaces.com/accommodation/berlin/92342
我想提取价格、#浴室、#室友等信息...
但是,使用我在网上找到的不同方法,我无法提取 完整 html 代码。总是缺少包含相关信息的子部分。在网站上,您可以用小箭头打开这些小节。我是 html 的新手,所以我不明白为什么不能将其拉出。
这是我尝试过的代码:
from selenium import webdriver
from bs4 import BeautifulSoup
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver= webdriver.Chrome(chrome_options=options,executable_path=r'path/chromedriver.exe')
driver.get('https://www.uniplaces.com/accommodation/berlin/92342')
html_doc = driver.page_source
soup= BeautifulSoup(html_doc,'lxml')
print (soup.prettify())
及其变体:
import urllib.request
fp= urllib.request.urlopen("https://www.uniplaces.com/accommodation/berlin/92342")
mybytes = fp.read()
mystr = mybytes.decode("utf8")
fp.close()
print(mystr)
如果有人可以提供帮助,我将非常感谢任何提示和技巧!
一切顺利, 汉娜
【问题讨论】:
-
“缺失”位可能是通过 AJAX 请求加载的内容,然后在加载主页后插入 HTML(这种事情通常是为了响应某些用户操作而完成的,正如你所提到的。它不必刷新整个页面来更新一小部分)。由于您只是将初始版本下载为 HTML 文档,因此您当然没有机会加载额外的位。顺便说一句,我看不出这与 JSON 有什么关系,我将删除该标签。
标签: python html web-scraping beautifulsoup graphql