代码之家  ›  专栏  ›  技术社区  ›  Kamikaze_goldfish

漂亮的组合和刮擦href不起作用

  •  0
  • Kamikaze_goldfish  · 技术社区  · 8 年前

    我又一次有困难刮擦href的在BeautifulSoup。我有一个我正在抓取的页面列表,我有数据,但我似乎无法获得hrefs,即使我使用在其他脚本中工作的各种代码。

    下面是代码,我的数据如下:

    import requests
    from bs4 import BeautifulSoup
    
    
    with open('states_names.csv', 'r') as reader:
        states = [states.strip().replace(' ', '-') for states in reader]
    
    
    url = 'https://www.hauntedplaces.org/state/alabama'
    
    for state in states:
        page = requests.get(url+state)
        soup = BeautifulSoup(page.text, 'html.parser')
        links = soup.findAll('div', class_='description')
        # When I try to add .get('href') I get a traceback error. Am I trying to scrape the href too early? 
        h_page = soup.findAll('h3')
    
    <h3><a href="https://www.hauntedplaces.org/item/gaines-ridge-dinner-club/">Gaines Ridge Dinner Club</a></h3>
    <h3><a href="https://www.hauntedplaces.org/item/purifoy-lipscomb-house/">Purifoy-Lipscomb House</a></h3>
    <h3><a href="https://www.hauntedplaces.org/item/kate-shepard-house-bed-and-breakfast/">Kate Shepard House Bed and Breakfast</a></h3>
    <h3><a href="https://www.hauntedplaces.org/item/cedarhurst-mansion/">Cedarhurst Mansion</a></h3>
    <h3><a href="https://www.hauntedplaces.org/item/crybaby-bridge/">Crybaby Bridge</a></h3>
    <h3><a href="https://www.hauntedplaces.org/item/gaineswood-plantation/">Gaineswood Plantation</a></h3>
    <h3><a href="https://www.hauntedplaces.org/item/mountain-view-hospital/">Mountain View Hospital</a></h3>
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   jxpython    8 年前

    这非常有效:

    from bs4 import BeautifulSoup
    import requests
    
    url = 'https://www.hauntedplaces.org/state/Alabama'
    
    r = requests.get(url)
    soup = BeautifulSoup(r.text, 'lxml')
    
    for link in soup.select('div.description a'):
        print(link['href'])
    
        2
  •  0
  •   Dmitriy Kisil    8 年前

    soup = BeautifulSoup(page.content, 'html.parser')
    list0 = []   
    possible_links = soup.find_all('a')
    for link in possible_links:
        if link.has_attr('href'):
            print (link.attrs['href'])
            list0.append(link.attrs['href'])
    print(list0)