首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用soup.select和soup.find_all提取urls

尝试使用soup.select和soup.find_all提取urls
EN

Stack Overflow用户
提问于 2017-10-13 06:49:10
回答 3查看 353关注 0票数 1

这是网页HTML源代码的一部分:

代码语言:javascript
复制
<a href="http://www.abcde.com"> <img style="width:100%" src="/FileUploads/B/763846f.jpg" alt="search" title="search" /></a>
<a id="parts_img01" href="/Result?s=9&amp;type=%E4&amp;name=%E9"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>apple</h4></a>
<a id="parts_img02" href="/Result?s=12&amp;type=%E4&amp;name=%E4"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>banana</h4></a>
<a id="parts_img03" href="/Result?s=10&amp;type=%E4&amp;name=%E8"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>cherry</h4></a>
<a id="parts_img07" href="/Result?s=14&amp;type=%E4&amp;name=%E8"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>melon</h4></a>

我想提取我想要的urls,比如从/Result开始的urls?我刚知道你可以在漂亮的汤里用soup.find_all和soup.select。

soup.find_all:

代码语言:javascript
复制
icon = soup.find_all(id = re.compile("parts_img"))

其中一个结果将成功地打印:

代码语言:javascript
复制
<a href="/Result?s=9&amp;type=%E4&amp;name=%E9" id="parts_img01"><h4 style=""><i aria-hidden="true" class="fa f-c"></i>apple</h4></a>

soup.select:

代码语言:javascript
复制
for item in soup.select(".fa f-c"):
    print(item['href'])

这不管用..。

有没有一种方法可以直接从html中提取urls?我只想打印:

代码语言:javascript
复制
/Result?s=9&amp;type=%E4&amp;name=%E9
/Result?s=12&amp;type=%E4&amp;name=%E4
/Result?s=10&amp;type=%E4&amp;name=%E8
/Result?s=14&amp;type=%E4&amp;name=%E8
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-13 07:07:15

我认为这段代码将说明如何从给定的html中提取href

代码语言:javascript
复制
 html = """<a href="http://www.abcde.com"> <img style="width:100%" src="/FileUploads/B/763846f.jpg" alt="search" title="search" /></a>
<a id="parts_img01" href="/Result?s=9&amp;type=%E4&amp;name=%E9"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>apple</h4></a>
<a id="parts_img02" href="/Result?s=12&amp;type=%E4&amp;name=%E4"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>banana</h4></a>
<a id="parts_img03" href="/Result?s=10&amp;type=%E4&amp;name=%E8"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>cherry</h4></a>
<a id="parts_img07" href="/Result?s=14&amp;type=%E4&amp;name=%E8"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>melon</h4></a>"""
from bs4 import BeautifulSoup as Soup
import re
from urllib.parse import urljoin
parser = Soup(html, "lxml")
href = [ urljoin("http://www.abcde.com", a["href"]) for a in parser.findAll("a", {"id" : re.compile('parts_img.*')})]
print(href)
票数 1
EN

Stack Overflow用户

发布于 2017-10-13 08:00:28

要在不使用regex的情况下获得相同的输出:

代码语言:javascript
复制
html = """
 <a href="http://www.abcde.com"> <img style="width:100%" src="/FileUploads/B/763846f.jpg" alt="search" title="search" /></a>
<a id="parts_img01" href="/Result?s=9&amp;type=%E4&amp;name=%E9"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>apple</h4></a>
<a id="parts_img02" href="/Result?s=12&amp;type=%E4&amp;name=%E4"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>banana</h4></a>
<a id="parts_img03" href="/Result?s=10&amp;type=%E4&amp;name=%E8"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>cherry</h4></a>
<a id="parts_img07" href="/Result?s=14&amp;type=%E4&amp;name=%E8"><h4 style=""><i class="fa f-c" aria-hidden="true"></i>melon</h4></a>
"""
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, "lxml")
for link in soup.select("[id^='parts_img']"):
    print(link['href'])

结果:

代码语言:javascript
复制
/Result?s=9&type=%E4&name=%E9
/Result?s=12&type=%E4&name=%E4
/Result?s=10&type=%E4&name=%E8
/Result?s=14&type=%E4&name=%E8
票数 2
EN

Stack Overflow用户

发布于 2018-03-03 05:20:39

我在用

代码语言:javascript
复制
#!/usr/bin/python

import requests
from bs4 import BeautifulSoup
import re

top_url = 'https://a-certain.org/item-index'
response = requests.get(top_url)
html = response.content
soup = BeautifulSoup(html, 'html.parser')
items = soup.select('a[href^="http://a-certain.org/items"]')
for item in items:
        print(items['href'])

输出是

代码语言:javascript
复制
http://a-certain.org/items/item1/
http://a-certain.org/items/item2/
http://a-certain.org/items/item3/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46724032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档