【发布时间】:2019-08-14 12:41:49
【问题描述】:
我对 Python 很陌生,所以我仍在尝试找出 Beautiful Soup。我正在尝试抓取一个网站并提取五个紧跟我在代码中找到的标签的元素。
我尝试了 next.element,它只提取我在 soup.find 中使用的标签的文本,我尝试了 next.sibling,它返回为空白。
页面上有许多“first”和“last”类,所以我必须指定我想要的文本行。这是我要抓取的内容:
<li>
<ul>
<li class="first">Maintenance</li>
<li>$number1</li>
<li>$number2</li>
<li>$number3</li>
<li>$number4</li>
<li>$number5</li>
<li class="last">$linetotal</li>
</ul>
</li>
这是我正在尝试的:
for x,y in zip(make, model):
url = ('https://URL with variables goes here')
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
search = requests.get(url, headers = headers)
html = search.text
soup = BeautifulSoup(html, 'lxml')
search_results = soup.find('li', class_ = 'first', text = re.compile('Maintenance'))
try:
d = search_results.next_element
print(d)
except:
print('pass')
最终目标是将 number1:number5 的数组附加到一个列表中,但使用上面的代码,输出只是“维护”。我哪里错了?另外,由于我是新人,如果您也能提供上下文,我将非常感激。
【问题讨论】:
-
您是否希望每次出现类都先进行文本维护,然后是 li 孩子?还是只有第一次出现?可以分享一下网址吗?维护是否只发生一次且位置固定?
标签: python web-scraping beautifulsoup