【发布时间】:2018-04-16 10:04:47
【问题描述】:
我是网络抓取的新手。我正在从一个网站抓取数据,我抓取了第一页 href,然后我转到每个 href 并在“地址数据”类中找到“p 标签”。我想存储一个url 'p tag' 数据在一行中,第二个 url 'p tag' 标签在第二行。我的数据附加在 'myUrl' 中。我想将数据保存在 csv 文件中,例如地址、经纬度、电话、电子邮件,然后新行开始.
这是我的代码:
from bs4 import BeautifulSoup
import requests
import csv
myUrl=[]
urls = ["http://www.shaditayari.pk/s&category=326&location=266&a=true&paged{}".format(i) for i in range(1, 10)] # make a url list and iterate over it
for url in urls:
r = requests.get(url)
print('idr1')
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.find_all('a', {'main-link'}):
iurl=link.get('href')
r = requests.get(iurl)
print(iurl)
soup = BeautifulSoup(r.content, "lxml")
with open ('lhr.cv','wb') as file:
divs = soup.find_all('div',attrs={"class":"address-data"})
for div in divs:
myUrl.append(div.find('p').text)
#print(myUrl)
with open ('lhr.cv','w') as file:
writer=csv.writer(file)
for row in myUrl:
writer.writerow(row)
预期输出:
9 Fane Road، Lahore 54000, Pakistan|1.561381309140028|74.31484723624567|042-37363901-9|gm@bestwesternlahore.com/sales@bestwesternlahore.com/ reservations@bestwesternlahore.com
1/E-3, Main Boulevard Gulberg III, Lahore|31.525700029363|74.34930089283|0305-2960614|https://www.facebook.com/pages/Zauk-Banquet-Hall/204612846290857
【问题讨论】:
-
打开CSV 之前你
soup.find_all。您想打开一个文件,然后然后写入数据。 -
@cricket_007 我已经打开了。
-
请您举一个您想在不应用任何 Python 代码/格式的情况下抓取的 URL 示例吗?
-
@cstaff91 是shaditayari.pk/…、shaditayari.pk/… 等等
-
你做了,但是你为每个
div打开了同一个文件。 (文件中只有最后一个 div 数据)。如果您希望 所有 div 位于单个文件中,则需要在循环之前打开文件
标签: python python-3.x csv web-scraping beautifulsoup