Chcę wyodrębnić link

/stocks/company_info/stock_news.php?sc_id=CHC&scat=&pageno=2&next=0&durationType=Y&Year=2018&duration=1&news_type=

Z HTML strony

http://www.moneycontrol.com/company-article/piramalenterprises/news/PH05#PH05

Poniżej znajduje się kod, który jest używany

url_list = "http://www.moneycontrol.com/company-article/piramalenterprises/news/PH05#PH05"
html = requests.get(url_list)
soup = BeautifulSoup(html.text,'html.parser')
link = soup.find_all('a')
print(link)

Korzystanie z pięknej zupy. Jak pójdę na to, korzystając z Find_all ("A") nie zwraca wymaganego linku w zwróconych HTML.

0
Abhishek Pal 21 luty 2019, 12:59

2 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego, aby uzyskać dokładny adres URL.

import bs4 as bs
import requests
import re


sauce = requests.get('https://www.moneycontrol.com/stocks/company_info/stock_news.php?sc_id=CHC&durationType=Y&Year=2018')

soup = bs.BeautifulSoup(sauce.text, 'html.parser')

for a in soup.find_all('a', href=re.compile("company_info")):
   # print(a['href'])
    if 'pageno' in a['href']:
        print(a['href'])

Wynik:

/stocks/company_info/stock_news.php?sc_id=CHC&scat=&pageno=2&next=0&durationType=Y&Year=2018&duration=1&news_type=
/stocks/company_info/stock_news.php?sc_id=CHC&scat=&pageno=3&next=0&durationType=Y&Year=2018&duration=1&news_type=
1
KunduK 21 luty 2019, 11:07

Wystarczy użyć metody get, aby znaleźć atrybut href:

from bs4 import BeautifulSoup as soup
import requests

url_list = "http://www.moneycontrol.com/company-article/piramalenterprises/news/PH05#PH05"
html = requests.get(url_list)
page= soup(html.text,'html.parser')
link = page.find_all('a')
for l in link:
    print(l.get('href'))
1
Maaz 21 luty 2019, 10:25