BeautifulSoup问题:获取确切的链接网址和标题

时间:2018-01-09 14:35:57

标签: python web-scraping beautifulsoup

这是我的代码。此代码返回所有h2标题而非链接

from bs4 import BeautifulSoup
import requests
url=requests.get("http://www.prothom-alo.com/")
data=url.text
soup=BeautifulSoup(data ,"lxml")
for link in soup.find_all("h2"):
    print(link)

我希望获得与link+title类似的链接和标题。我尝试了很多方法,但我不能正确。如何获得标题的确切链接?

3 个答案:

答案 0 :(得分:2)

我猜你想要所有标题及其相应的链接(href)。

import requests
from bs4 import BeautifulSoup

r = requests.get('http://www.prothomalo.com/')
soup = BeautifulSoup(r.text, 'html.parser')
titles = {}
for div in soup.find_all('div', {'class': 'col col1'}):
    title = div.find('span', {'class': 'title'}).text
    link = div.find('a', {'class': 'link_overlay'}).get('href')
    titles[title] = link

现在,我们有一个字典,其中所有标题为keys,其对应的链接(href)为values

检查我们有什么

for t in titles.items():
    print(t)

输出:

('ঢাকা উত্তর সিটি উপনির্বাচনে সেনা চান ফখরুল', 'bangladesh/article/1405261/%E0%A6%A2%E0%A6%BE%E0%A6%95%E0%A6%BE-%E0%A6%89%E0%A6%A4%E0%A7%8D%E0%A6%A4%E0%A6%B0-%E0%A6%B8%E0%A6%BF%E0%A6%9F%E0%A6%BF-%E0%A6%89%E0%A6%AA%E0%A6%A8%E0%A6%BF%E0%A6%B0%E0%A7%8D%E0%A6%AC%E0%A6%BE%E0%A6%9A%E0%A6%A8%E0%A7%87-%E0%A6%B8%E0%A7%87%E0%A6%A8%E0%A6%BE-%E0%A6%9A%E0%A6%BE%E0%A6%A8-%E0%A6%AB%E0%A6%96%E0%A6%B0%E0%A7%81%E0%A6%B2')
('সোনার ভরি ৫০ হাজার টাকা ছাড়াল', 'economy/article/1405121/%E0%A6%B8%E0%A7%8B%E0%A6%A8%E0%A6%BE%E0%A6%B0-%E0%A6%AD%E0%A6%B0%E0%A6%BF-%E0%A7%AB%E0%A7%A6-%E0%A6%B9%E0%A6%BE%E0%A6%9C%E0%A6%BE%E0%A6%B0-%E0%A6%9F%E0%A6%BE%E0%A6%95%E0%A6%BE-%E0%A6%9B%E0%A6%BE%E0%A7%9C%E0%A6%BE%E0%A6%B2')
('ঘুষসংক্রান্ত বক্তব্যের জন্য শিক্ষামন্ত্রীর পদত্যাগ দাবি', 'bangladesh/article/1405246/%E0%A6%B6%E0%A6%BF%E0%A6%95%E0%A7%8D%E0%A6%B7%E0%A6%BE%E0%A6%AE%E0%A6%A8%E0%A7%8D%E0%A6%A4%E0%A7%8D%E0%A6%B0%E0%A7%80%E0%A6%B0-%E0%A6%AA%E0%A6%A6%E0%A6%A4%E0%A7%8D%E0%A6%AF%E0%A6%BE%E0%A6%97-%E0%A6%A6%E0%A6%BE%E0%A6%AC%E0%A6%BF')
('মুমিনুলকে ডাবল সেঞ্চুরির হাতছানি', 'sports/article/1405116/%E0%A6%AE%E0%A7%81%E0%A6%AE%E0%A6%BF%E0%A6%A8%E0%A7%81%E0%A6%B2%E0%A6%95%E0%A7%87-%E0%A6%A1%E0%A6%BE%E0%A6%AC%E0%A6%B2-%E0%A6%B8%E0%A7%87%E0%A6%9E%E0%A7%8D%E0%A6%9A%E0%A7%81%E0%A6%B0%E0%A6%BF%E0%A6%B0-%E0%A6%B9%E0%A6%BE%E0%A6%A4%E0%A6%9B%E0%A6%BE%E0%A6%A8%E0%A6%BF')
('সাংবাদিকদের প্রশ্ন এড়াতে...', 'international/article/1405181/%E0%A6%B8%E0%A6%BE%E0%A6%82%E0%A6%AC%E0%A6%BE%E0%A6%A6%E0%A6%BF%E0%A6%95%E0%A6%A6%E0%A7%87%E0%A6%B0-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%B6%E0%A7%8D%E0%A6%A8-%E0%A6%8F%E0%A7%9C%E0%A6%BE%E0%A6%A4%E0%A7%87')
('ভারতে সিনেমা হলে জাতীয় সংগীত বাধ্যতামূলক নয়', 'international/article/1405071/%E0%A6%AD%E0%A6%BE%E0%A6%B0%E0%A6%A4%E0%A7%87-%E0%A6%B8%E0%A6%BF%E0%A6%A8%E0%A7%87%E0%A6%AE%E0%A6%BE-%E0%A6%B9%E0%A6%B2%E0%A7%87-%E0%A6%9C%E0%A6%BE%E0%A6%A4%E0%A7%80%E0%A7%9F-%E0%A6%B8%E0%A6%82%E0%A6%97%E0%A7%80%E0%A6%A4-%E0%A6%AC%E0%A6%BE%E0%A6%9C%E0%A6%BE%E0%A6%A8%E0%A7%8B-%E0%A6%AC%E0%A6%BE%E0%A6%A7%E0%A7%8D%E0%A6%AF%E0%A6%A4%E0%A6%BE%E0%A6%AE%E0%A7%82%E0%A6%B2%E0%A6%95-%E0%A6%A8%E0%A7%9F')
('মেধাবীদের কত দিন দূরে রাখবে দেশ?', 'durporobash/article/1405241/%E0%A6%AE%E0%A7%87%E0%A6%A7%E0%A6%BE%E0%A6%AC%E0%A7%80%E0%A6%A6%E0%A7%87%E0%A6%B0-%E0%A6%95%E0%A6%A4-%E0%A6%A6%E0%A6%BF%E0%A6%A8-%E0%A6%A6%E0%A7%82%E0%A6%B0%E0%A7%87-%E0%A6%B0%E0%A6%BE%E0%A6%96%E0%A6%AC%E0%A7%87-%E0%A6%A6%E0%A7%87%E0%A6%B6')
('প্রিয় শৈশব, যেখানেই আছ ভালো থেকো!', 'durporobash/article/1405206/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%BF%E0%A7%9F-%E0%A6%B6%E0%A7%88%E0%A6%B6%E0%A6%AC-%E0%A6%AF%E0%A7%87%E0%A6%96%E0%A6%BE%E0%A6%A8%E0%A7%87%E0%A6%87-%E0%A6%86%E0%A6%9B-%E0%A6%AD%E0%A6%BE%E0%A6%B2%E0%A7%8B-%E0%A6%A5%E0%A7%87%E0%A6%95%E0%A7%8B')
('প্রেসিডেন্ট নির্বাচনে ট্রাম্পের প্রতিদ্বন্দ্বী অপরাহ্\u200c!', 'northamerica/article/1405231/%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A7%87%E0%A6%B8%E0%A6%BF%E0%A6%A1%E0%A7%87%E0%A6%A8%E0%A7%8D%E0%A6%9F-%E0%A6%A8%E0%A6%BF%E0%A6%B0%E0%A7%8D%E0%A6%AC%E0%A6%BE%E0%A6%9A%E0%A6%A8%E0%A7%87-%E0%A6%9F%E0%A7%8D%E0%A6%B0%E0%A6%BE%E0%A6%AE%E0%A7%8D%E0%A6%AA%E0%A7%87%E0%A6%B0-%E0%A6%AA%E0%A7%8D%E0%A6%B0%E0%A6%A4%E0%A6%BF%E0%A6%A6%E0%A7%8D%E0%A6%AC%E0%A6%A8%E0%A7%8D%E0%A6%A6%E0%A7%8D%E0%A6%AC%E0%A7%80')
('একেই বলে ভাগ্য!', 'northamerica/article/1405091/%E0%A6%8F%E0%A6%95%E0%A7%87%E0%A6%87-%E0%A6%AC%E0%A6%B2%E0%A7%87-%E0%A6%AD%E0%A6%BE%E0%A6%97%E0%A7%8D%E0%A6%AF')
('নগরে শীতের হাওয়া', 'bangladesh/article/1405076/%E0%A6%A8%E0%A6%97%E0%A6%B0%E0%A7%87-%E0%A6%B6%E0%A7%80%E0%A6%A4%E0%A7%87%E0%A6%B0-%E0%A6%B9%E0%A6%BE%E0%A6%93%E0%A7%9F%E0%A6%BE')

我希望这就是你要找的东西。我无法验证,因为我不懂语言。

答案 1 :(得分:0)

也许您打算在这些元素中获取文本。如果是这种情况,这可能会有所帮助:

from bs4 import BeautifulSoup
import requests
url=requests.get("http://www.prothom-alo.com/")
data=url.text
soup=BeautifulSoup(data ,"lxml")
for link in soup.find_all("h2"):
    print(link.text)

答案 2 :(得分:0)

你的问题不完整!在这里,我分开了标题和链接。我想你需要这样的东西:

对于Python 3:

from bs4 import BeautifulSoup
import requests
url = requests.get("http://www.prothomalo.com/")
data = url.text
soup = BeautifulSoup( data )


for link in soup.findAll('div',{'class':'row'}):
     print (link.find('h2').text)
     print (link.find('a')['href'])

如果没有,这可能对你有所帮助:

1)How to extract link from <a> inside the <h2 class=section-heading>:BeautifulSoup

2)BeautifulSoup getting href

3)retrieve links from web page using python and BeautifulSoup

4)How to find elements by class

祝你好运!