我正在尝试从html格式的网站上抓取网址。我用美味的汤。这是html的一部分。
<li style="display: block;">
<article itemscope itemtype="http://schema.org/Article">
<div class="col-md-3 col-sm-3 col-xs-12" >
<a href="/stroke?p=3083" class="article-image">
<img itemprop="image" src="/FileUploads/Post/3083.jpg?w=300&h=160&mode=crop" alt="Banana" title="Good for health">
</a>
</div>
<div class="col-md-9 col-sm-9 col-xs-12">
<div class="article-content">
<a href="/stroke">
<img src="/assets/home/v2016/img/icon/stroke.png" style="float:left;margin-right:5px;width: 4%;">
</a>
<a href="/stroke?p=3083" class="article-title">
<div>
<h4 itemprop="name" id="playground">
Banana Good for health </h4>
</div>
</a>
<div>
<div class="clear"></div>
<span itemprop="dateCreated" style="font-size:10pt;color:#777;">
<i class="fa fa-clock-o" aria-hidden="true"></i>
09/10 </span>
</div>
<p itemprop="description" class="hidden-phone">
<a href="/stroke?p=3083">
I love Banana.
</a>
</p>
</div>
</div>
</article>
</li>
我的代码:
from bs4 import BeautifulSoup
re=requests.get('http://xxxxxx')
bs=BeautifulSoup(re.text.encode('utf-8'), "html.parser")
for link in bs.find_all('a') :
if link.has_attr('href'):
print (link.attrs['href'])
结果将打印出此页面中的所有网址,但这不是我要找的内容,我只想要一个像&#34; / stroke?p = 3083&#34;在这个例子中如何在python中设置条件? (我知道有三个&#34; / stroke?p = 3083&#34;在这,但我只需要一个)
另一个问题。这个网址不完整,我需要将它们与&#34; http://www.abcde.com&#34;所以结果将是&#34; http://www.abcde.com/stroke?p=3083&#34;。我知道我可以在R中使用paste,但是如何在Python中执行此操作?提前致谢! :)
答案 0 :(得分:2)
只需在刮刀中添加一个替换some_link
的链接即可。我想你会得到你想要的链接以及它的完整形式。
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
res = requests.get(some_link).text
soup = BeautifulSoup(res,"lxml")
for item in soup.select(".article-image"):
print(urljoin(some_link,item['href']))
答案 1 :(得分:0)
另一个问题。这个网址不完整,我需要将它们结合起来 使用“gensim library for word2vec”,结果将是 “http://www.abcde.com”。我知道我可以在R中使用粘贴,但是 如何在Python中执行此操作?提前致谢! :)
link = 'http://abcde.com' + link
答案 2 :(得分:0)
你已经掌握了大部分权利。收集链接如下(只是你正在做的列表理解版本)
urls = [url for url in bs.findall('a') if url.has_attr('href')]
这会给你网址。要获取其中一个,并将其附加到abcde网址,您只需执行以下操作:
if urls:
new_url = 'http://www.abcde.com{}'.format(urls[0])