【问题标题】:New to Web Scraping网页抓取新手
【发布时间】:2019-06-28 03:22:25
【问题描述】:

尝试自学一些网络抓取,只是为了好玩。决定用它来查看网站上发布的工作列表。我被卡住了。我希望能够提取此页面上列出的所有作业,但似乎无法让它识别我制作的容器中更深层次的任何内容。任何建议都非常感谢。

当前代码:

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

myURL = 'https://jobs.collinsaerospace.com/search-jobs/'

uClient = uReq(myURL)
page_html = uClient.read()
uClient.close()

page_soup = soup(page_html, "html.parser")
container = page_soup.findAll("section", {"id":"search-results-list"})
container

容器样本:

<section id="search-results-list">
 <ul>
 <li>
 <a data-job-id="12394447" href="/job/melbourne/test-technician/1738/12394447">
 <h2>Test Technician</h2>
 <span class="job-location">Melbourne, Florida</span>
 <span class="job-date-posted">06/27/2019</span>
 </a>
 </li>
 <li>
 <a data-job-id="12394445" href="/job/cedar-rapids/associate-systems-engineer/1738/12394445">
 <h2>Associate Systems Engineer</h2>
 <span class="job-location">Cedar Rapids, Iowa</span>
 <span class="job-date-posted">06/27/2019</span>
 </a>
 </li>
 <li>

我试图了解如何实际提取 h2 级别信息(或实际上是我当前创建的容器中的任何信息)

【问题讨论】:

  • 你能帮我理解为什么这是题外话吗?
  • 发布(样本)您尝试解析的 HTML 到您的问题中。告诉我们您想从中提取哪些数据。

标签: python web-scraping beautifulsoup


【解决方案1】:

我尝试使用 lxml 复制相同的内容。

import requests
from lxml import html
resp = requests.get('https://jobs.collinsaerospace.com/search-jobs/')
data_root = html.fromstring(resp.content)

data = []
for node in data_root.xpath('//section[@id="search-results-list"]/ul/li'):
    data.append({"url":node.xpath('a/@href')[0],"name":node.xpath('a/h2/text()')[0],"location":node.xpath('a/span[@class="job-location"]/text()')[0],"posted":node.xpath('a/span[@class="job-date-posted"]/text()')[0]})
print(data)

【讨论】:

    【解决方案2】:

    如果我理解正确,您希望从 container 中提取标题。这是执行此操作的 sn-p:

    for child in container:
        for heading in child.find_all('h2'):
            print(heading.text)
    

    请注意,childheading 只是我用来遍历 ResultSet(容器是)和列表(所有标题都是)的虚拟变量。对于每个孩子,我都在搜索所有的标签,对于每个孩子,我都在打印它的文本。

    如果您想从容器中提取其他内容,只需调整 find_all

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-18
      • 2019-07-15
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多