这个问题适用于Win10上的Python 3.6.3,bs4和Selenium 3.8。
我正在尝试使用动态内容来抓取页面。我想要抓取的是数字和文字(例如来自http://www.oddsportal.com)。从我理解使用请求+ beautifulsoup将无法完成工作,因为动态内容将被隐藏。所以我必须使用其他工具,例如我们的selenium webdriver。
然后,鉴于我将使用selenium webdriver,你是否建议忽略beautifulsoup并坚持使用selenium webdriver函数,例如
elem = driver.find_element_by_name("q"))
或者使用selenium + beautifulsoup被认为是更好的做法吗?
您对两条路线中的哪条路线能给我更方便的功能有什么看法吗?
感谢。
答案 0 :(得分:2)
Beautifulsoup
是网页摘要的强大工具。它使用 urllib.request Python库。 urllib.request
非常强大,可以从静态网页中提取数据。
Selenium
是目前用于 Web Automation 的最广泛接受且最有效的工具。 Selenium支持与Dynamic Pages, Contents and Elements
进行交互。
要创建一个强大而高效的框架来抓取包含动态内容的网页,您必须在框架中集成 Selenium
和 Beautifulsoup
。通过 Selenium
浏览动态元素并与之互动,并通过 Beautifulsoup
Selenium
使用 Beautifulsoup
和 Scrapping
example
答案 1 :(得分:1)
Selenium
有很多selectors
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
# and
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
所以大多数情况下你不需要BeautifulSoup
。
特别是xpath
和css_selector
可能很有用。