微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中使用beautifulsoup进行抓取时缺少值

如何解决在python中使用beautifulsoup进行抓取时缺少值

作为第一个使用python的项目,我正在尝试进行网络抓取(这对编程来说是全新的东西),我快完成了,但是网页上的某些值丢失了,所以我想用一些东西替换掉那个缺失的值就像“ 0”或“未找到”,实际上我只是想从数据中制作一个csv文件,而不是真正地进行分析。

我要抓取的网页是:https://www.lamudi.com.mx/nuevo-leon/departamento/for-rent/?page=1

我有一个循环,该循环收集页面的所有te链接,然后转到它们中的每个链接以抓取数据并将其保存在列表中,但是我的某些列表中的元素少于其他列表。因此,我只希望我的程序确定何时缺少值,然后在“尺寸”列表中附加“ 0”或“未找到”。

用于收集页面上的链接

tags = soup('a',{'class':'js-listing-link'})
for tag in tags:
    link = tag.get('href')
    if link not in links:
        links.append(link)

print("Number of Links:",len(links))

用于收集每个部门的规模:

for link in links:
    size = soup('span',{'class':'Overview-attribute icon-livingsize-v4'})
    for mysize in size:
        mysize = mysize.get_text().strip()
        sizes.append(mysize)

print("Number of Sizes:",len(sizes))

解决方法

在此页面上,您可以选择所有列表行(用.select('.ListingCell-row'),然后选择其中的所有信息(并用-替换缺少的信息):

import requests
from bs4 import BeautifulSoup


url = 'https://www.lamudi.com.mx/nuevo-leon/departamento/for-rent/?page=1'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0'}
soup = BeautifulSoup(requests.get(url,headers=headers).content,'html.parser')

for row in soup.select('.ListingCell-row'):
    name = row.h3.get_text(strip=True)
    link = row.h3.a['href']
    size = row.select_one('.icon-livingsize')
    size = size.get_text(strip=True) if size else '-'
    print(name)
    print(link)
    print(size)
    print('-' * 80)

打印:

Loft en Renta Amueblado Una Recámara Cerca Udem
https://www.lamudi.com.mx/loft-en-renta-amueblado-una-recamara-cerca-udem.html
50 m²
--------------------------------------------------------------------------------
DEPARTAMENTO EN RENTA SAN JERONIMO EQUIPADO
https://www.lamudi.com.mx/departamento-en-renta-san-jeronimo-equipado.html
-
--------------------------------------------------------------------------------
Departamento - Narvarte
https://www.lamudi.com.mx/departamento-narvarte-58.html
60 m²
--------------------------------------------------------------------------------

...and so on.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。