【问题标题】:Web scraping from the list of urls with python使用 python 从 url 列表中抓取网页
【发布时间】:2020-02-25 16:57:48
【问题描述】:

我正在尝试从列表中抓取一些列表属性网站。我编写了简单的代码来从一个 url 获取数据,但是当我尝试使用 list ['url1','url2'] 时,我什么也没有。我也在尝试使用 csv 列表,但我仍然一无所有。我检查了很多类似的主题,但结果仍然是空的。你能帮我理解怎么做吗?

'''

import lxml
import requests
import pandas as pd
from bs4 import BeautifulSoup

url = 'https://www.zillow.com/homedetails/105-Itasca-St-Boston-MA-02126/59137872_zpid/'
response = requests.get(url)
req_headers = {
    'accept': 
    'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.8',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like 
    Gecko) Chrome/61.0.3163.100 Safari/537.36'
}

with requests.Session() as s:
url 
r = s.get(url, headers=req_headers)
soup = BeautifulSoup(r.content, 'lxml')

price = soup.find('span', {'class': 'ds-value'}).text
property_type = soup.find('span', {'class': 'ds-home-fact-value'}).text
address = soup.find('h1', {'class': 'ds-address-container'}).text

price, property_type, address '''

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

    要完成您对多个网址的要求,您只需将它们放在一个列表中并对其进行迭代:

    import requests
    from bs4 import BeautifulSoup
    
    urls = [
        'https://www.zillow.com/homedetails/105-Itasca-St-Boston-MA-02126/59137872_zpid/',
    ]
    
    with requests.Session() as s:
        for url in urls:
            r = s.get(url)
            soup = BeautifulSoup(r.text, 'html.parser')
    
            # do something with soup
    

    然而,这里的主要问题是您的示例网页上几乎所有有趣的东西似乎都是由 JavaScript 生成的。例如,如果您:

    print(soup.body)
    

    您会看到此网页的 html 正文几乎没有(没有价格、没有房屋详细信息等),除了用于验证您是人类的验证码机制。您需要找到一种方法来等待 JavaScript 在页面上呈现,以便能够抓取详细信息。查看 python 模块 selenium 作为实现此目的的潜在解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      相关资源
      最近更新 更多