网页搜寻新手

时间:2019-06-28 03:22:25

标签: python web-scraping beautifulsoup

尝试自学一些网络抓取,只是为了好玩。决定使用它来查看网站上发布的作业列表。我被卡住了。我希望能够拉出此页面上列出的所有作业,但似乎无法识别出我已制成的容器中更深的任何物品。任何建议都值得赞赏。

当前代码:

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级信息(或实际上是我当前创建的容器中的任何信息)

2 个答案:

答案 0 :(得分:2)

我尝试使用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)

答案 1 :(得分:2)

如果我的理解正确,那么您正在寻求从container中提取标题。这是执行此操作的代码段:

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

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

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