尝试自学一些网络抓取,只是为了好玩。决定使用它来查看网站上发布的作业列表。我被卡住了。我希望能够拉出此页面上列出的所有作业,但似乎无法识别出我已制成的容器中更深的任何物品。任何建议都值得赞赏。
当前代码:
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级信息(或实际上是我当前创建的容器中的任何信息)
答案 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)
请注意,child
和heading
只是我用来遍历ResultSet(容器为)和列表(所有标题为)的伪变量。对于每个孩子,我正在搜索所有标签,对于每个孩子,我正在打印其文本。
如果要从容器中提取其他内容,只需调整find_all
。