python - 网页抓取新手
问题描述
试图自学一些网络抓取,只是为了好玩。决定用它来查看网站上发布的工作列表。我被卡住了。我希望能够提取此页面上列出的所有作业,但似乎无法让它识别我制作的容器中更深层次的任何内容。任何建议都值得赞赏。
当前代码:
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 级别信息(或实际上是我当前创建的容器中的任何信息)
解决方案
我尝试使用 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)
推荐阅读
- c++ - C++ DLL 类导出,编译器“优化”虚拟调用
- php - Woo-commerce 评论不适用于单个产品页面
- firebase - Firebase 电话身份验证每个手机号码的每日限制
- python - MapReduce 统计出现的行数
- javascript - 从 axios 发送到 API Controller 时,Object 上的值为 null。如何解决?
- vue.js - vue cli 如何在 index.html 中创建自定义块和挂钩?
- javascript - 如何修改正则表达式以限制字符数最少 8 到最多 20
- java - 怎么计算!构造一个算法,允许您输入一个 4 位整数并计算第一位和最后一位数字的总和
- ruby-on-rails - 通过关系在 has_many 上的 ActiveRecord::InvalidForeignKey
- python-3.x - 如何处理带有嵌套列表和字符串元素的列表?