Проблема с извлечением ссылки href из результата поиска soup

#python #web-scraping #beautifulsoup #scrapy

#python #веб-очистка #beautifulsoup #scrapy

Вопрос:

Я пытаюсь получить ссылку с веб-сайта https://www.lianjia.com/city / внутри первой области поиска. Из первой провинции я хочу получить ссылку для городов, принадлежащих этой провинции, я нахожу все теги li со ссылкой href by print(t) , но когда я пытаюсь извлечь ссылку by t.get('href') , она ничего не возвращает, в чем проблема с приведенным ниже кодом, может кто-нибудь, пожалуйста, помочь?

 url1 = 'https://www.lianjia.com/city/'
req1 = requests.get(url1)
soup1 = BeautifulSoup(req1.content, 'html.parser')
part = soup1.findAll("div",{"class":"city_province"})
for t in part[0].find_all('li'):
    print(t)
    print(t.get('href'))
  

Ответ №1:

li у тега нет href атрибута. Вы должны получить все якоря, чтобы получить href .

Попробуйте это:

 import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(requests.get('https://www.lianjia.com/city/').content, 'html.parser')
provinces = soup.find_all("div", {"class": "city_province"})
anchors = [[a["href"] for a in p.find_all("a")] for p in provinces]

for province_urls in anchors:
    print(province_urls)
  

Вывод:

 ['https://aq.lianjia.com/', 'https://cz.fang.lianjia.com/', 'https://hf.lianjia.com/', 'https://mas.lianjia.com/', 'https://wuhu.lianjia.com/']
['https://bj.lianjia.com/']
['https://cq.lianjia.com/']
['https://fz.lianjia.com/', 'https://quanzhou.lianjia.com/', 'https://xm.lianjia.com/', 'https://zhangzhou.lianjia.com/']
and so on...