无法从网站上抓取一些“ div”标签

时间:2018-06-29 18:39:39

标签: python html screen-scraping

我正在尝试从以下页面抓取职位信息:https://www.fl.ru

可能是一个新手问题,但事实证明我可以获得某些标签,而其他标签似乎无法访问,例如:

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen("https://www.fl.ru/projects/")
bsObj = BeautifulSoup(html, "lxml")

textTags = bsObj.findAll("div", class_="b-post__txt ")
print(str(textTags))

谢谢

2 个答案:

答案 0 :(得分:0)

如果使用某些下载程序(wgetcurl)下载html页面,您将看到元素根本不在页面中。这些元素是由javascript生成的。

例如(来自页面源的摘录):

<script type="text/javascript">document.write('<div class="b-post__body b-post__body_padtop_15 b-post__body_overflow_hidden b-layuot_width_full"> <div class="b-post__txt "> У нас есть для вас вакансия Full-stack PHP-разработчика на удаленную работу (полный рабочий день) или в офис (г. Москва).&nbsp; Работать нужно будет над нашими проектами, в том... </div> <div id="project-reason-3728923" style="display: none"> </div> </div>');</script>

您有两种选择:执行JavaScript(使用浏览器和类似selenium的驱动程序)或手动解析,方法是使用漂亮的汤来获取<script>标签内容,然后在{{ 1}},并配上精美的汤。

答案 1 :(得分:-1)

许多现代网页都使用Javascript在浏览器中动态构建DOM,而您要查找的部分在浏览器完成页面构建之前就不存在。

如果您不使用具有Javascript功能的浏览器或库,则所查找的页面元素将根本不存在。