我已经为此苦苦挣扎了两天。 有一个名为“ unCheck”的类,我不想将其导入到csv中。我已经尝试过IF循环以及几乎所有想到的方法,但是我知道我跳过了一些事情。
此外,脚本正在创建文件,但是我没有将所有内容都散布成正确的格式,例如标题下的标题,描述下的描述等。 我知道我在那里,但是我似乎找不到它:/
忘了提到这是试图删除的链接(使用csv表示当前站点上的所有链接)https://www.interhome.com/spain/barcelona/barcelona/apartment-placa-catalunya-rdauniversidad-es9510.90.1/?q=apartment%2bpla%25c3%25a7a%2bcatalunya%252frda.universidad%2b%25e2%2598%2585%25e2%2598%2585%25e2%2598%2585%25e2%2598%2585%252c%2bbarcelona
滚动时,您会看到设施向下
import requests
import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup
contents = []
with open('accomodation.csv', 'r') as csvf:
urls = csv.reader(csvf)
for url in urls:
contents.append(url)
for url in contents:
page = urlopen(url[0]).read()
soup = BeautifulSoup(page, 'html.parser')
accomodation = soup.findAll('div', {'class' : 'modAccommodationDetail'})
file_path = 'scraping.csv'
with open(file_path, "a") as csvf:
accomodation = soup.findAll('div', {'class' : 'modAccommodationDetail'})
for acom in accomodation:
title = acom.findAll('h1' , {'class' : 'base'})[0].text
print(title)
rooms = acom.findAll('div', {'class' : 'personsRooms'})[0].text
description = soup.findAll('div', {'class' : 'richtext'})
paragraph1 = acom.findAll('div', {'class' : 'richtext'})[0].text
print(paragraph1)
facilities1 = acom.findAll('div', {'class' : 'attr c_third'})[0].text
for unchecked in acom.find('ul', {'class' : 'attributelist'}): #im trying to make an IF loop to find it and after that skip just the one with that atribute "unCheck"
if unchecked.find('li', {'class' : 'unCheck'}:
continue
else:
print(facilities1)
facilities2 = acom.findAll('div', {'class' : 'attr c_third'})[1].text
print(facilities2)
distances = acom.findAll('div', {'class' : 'attr c_third'})[2].text
print(distances)
gallery = acom.find('ul', {'class' : 'object-thumb-list'}).findAll('a')
for link in gallery:
print(link['href'])
print('\n')
page_line = '{title}\n{rooms}\n{description}\n{facilities1}\n{facilities2}\n{distances}\n{gallery}\n\n'.format(
title = title,
rooms = rooms,
description = description,
facilities1 = facilities1,
facilities2 = facilities2,
distances = distances,
gallery = link['href']
)
csvf.write(page_line)
答案 0 :(得分:0)
您可以忽略列表中具有类的项目:
print([li.text for li in acom.find('div', {'class' : 'attr c_third'}).findAll('li') if not li.has_attr('class')])
输出应为:
[u'TV',u'Washing machine',u'Dishwasher',u'Air Conditioning',u'Internet(WiFi)']