【发布时间】:2018-08-08 12:39:18
【问题描述】:
我尝试从某个网站抓取信息,以从 YouTube 频道、所属国家和 URL 中获取多个名称的数据。现在可以抓取频道名称和网址的信息。我的目标是提取某个 YouTube 频道的国家/地区,但有时可能会丢失此信息。现在我可以提取每个频道的 URL 和频道名称,但我不知道如何提取标题的标题,例如:title="Romania"强>。我尝试使用正则表达式,但问题是 title 有时在标题中包含两次。以下代码演示了我当前的程序:
from bs4 import BeautifulSoup
import re
import requests
for i in range(1, 300):
url = "https://www.channelcrawler.com/eng/results/136630/page:%s" % i
req = requests.get(url)
data = req.text
soup = BeautifulSoup(data, "html.parser")
for link in soup.find_all('h4'):
#for t in link.find_all('title'):
print(link)
row = str(link)
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', row)
print(urls)
#print(link.text.strip())
print(link.get_text())
Output:
<h4>
<a href="http://www.youtube.com/channel/UCWmSq95JfUZTv1-Jxmkk-Rw" target="_blank" title="Ford South Africa">Ford South Africa</a> </h4>
['http://www.youtube.com/channel/UCWmSq95JfUZTv1-Jxmkk-Rw']
...
<h4>
<a href="http://www.youtube.com/channel/UCyfWjPOye4zFvEC_MkbJZ4w" target="_blank" title="Nutz Rider">Nutz Rider</a> <img alt="" src="/img/flags/gif/ro.gif" title="Romania"/> </h4>
['http://www.youtube.com/channel/UCyfWjPOye4zFvEC_MkbJZ4w']
【问题讨论】:
标签: python python-3.x beautifulsoup web-crawler