【问题标题】:How to identify this div tag?如何识别这个 div 标签?
【发布时间】:2021-06-09 10:59:59
【问题描述】:

我正在网上抓取 UpWork 工作建议,并找到了包含所有招聘信息的 div 标签,它的开始标签如下所示:

<div data-job-list-responsive="" data-ng-if="isInitialRequestComplete && !(isSavedJobsTabAvailable && isSavedJobsTab())" class="ng-scope">
#bunch of section objects for each job proposal 
<\div> 

我只是想知道如何识别这个标签?例如 Beautiful Soup 允许按 id 搜索,例如:

results = soup.find(id='ResultsContainer')

但除了 class='ng-scope' 之外,我无法区分上述 div 标记的任何定义特征,但页面上的太多元素属于该类,无法使其有意义。

我认为这与“data-job-list-responsive”标题有关,但不确定这将是 div 标签的哪个元素?

【问题讨论】:

  • 这看起来是 Angular js。数据可能以 json 格式嵌入在脚本标签中或直接从 api 请求访问。可以分享一下网址吗?
  • 感谢您的回复!网址是:upwork.com/ab/jobs/search/…,我正在寻找的是如何从该网址检索所有招聘信息!谢谢:)
  • 我担心这个可能无法被刮掉(或者至少需要比我愿意投入的更多的努力)。该网站阻止了网络抓取的自动化方式。你会得到几页,但你会被阻止。

标签: python web-scraping beautifulsoup


【解决方案1】:

您可以搜索所有div-tags,其中data-job-list-responsive 属性为空值""data-ng-if 属性值为"isInitialRequestComplete &amp;&amp; !(isSavedJobsTabAvailable &amp;&amp; isSavedJobsTab())"

soup = BeautfulSoup(your_html)
soup.find_all("div", {"data-job-list-responsive" : "", "data-ng-if" : "isInitialRequestComplete && !(isSavedJobsTabAvailable && isSavedJobsTab())"})

但是,网页内容很可能是由 javascript 动态创建的。您可以通过禁用 javascript、重新加载页面并检查所需内容是否仍然存在来轻松验证它。

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多