gpt4 book ai didi

python - 从 csv 文件中的 url 检索数据 - Python

转载 作者:行者123 更新时间:2023-12-01 04:27:55 24 4
gpt4 key购买 nike

如何修改此代码以使用 csv 中的 URL 列表,转到这些页面,然后执行代码的最后一部分以检索正确的数据?

我感觉前往 csv 存储的链接并从中检索数据的代码部分还很遥远,但我有一个 csv,其中每行列出一个我要定位的 url,最后一部分此针对联系详细信息等的代码也可以正常工作。

import requests
import re
from bs4 import BeautifulSoup
import csv

#Read csv
csvfile = open("gymsfinal.csv")
csvfilelist = csvfile.read()

#Get data from each url
def get_page_data():
for page_data in csvfilelist:
r = requests.get(page_data.strip())
soup = BeautifulSoup(r.text, 'html.parser')
return soup

pages = get_page_data()
'''print pages'''

#The work performed on scraped data
print soup.find("span",{"class":"wlt_shortcode_TITLE"}).text
print soup.find("span",{"class":"wlt_shortcode_map_location"}).text
print soup.find("span",{"class":"wlt_shortcode_phoneNum"}).text
print soup.find("span",{"class":"wlt_shortcode_EMAIL"}).text

th = soup.find('b',text="Category")
td = th.findNext()
for link in td.findAll('a',href=True):
match = re.search(r'http://(\w+).(\w+).(\w+)', link.text)
if match:
print link.text

gyms = [name,address,phoneNum,email]
gym_data_list.append(gyms)

#Saving specific listing data to csv
with open ("xgyms.csv", "wb") as file:
writer = csv.writer(file)
for row in gym_data_list:
writer.writerow(row)

gymsfinal.csv 片段:

http://www.gym-directory.com/listing/green-apple-wellness-centre/
http://www.gym-directory.com/listing/train-247-fitness-prahran/
http://www.gym-directory.com/listing/body-club/
http://www.gym-directory.com/listing/training-glen/

更改为 writer.writerow([row]) 以便保存 csv 数据,每个字母之间不使用逗号。

最佳答案

这里有几个问题。首先,你永远不会关闭你的第一个文件对象,这是一个很大的禁忌。您还应该使用代码片段底部的 with 语法来读取 csv。

您收到错误requests.exceptions.MissingSchema:无效的 URL 'h':未提供架构。也许您的意思是 http://h? 因为当您读取 csv 时,您只是将其作为一个大字符串读取,并带有换行符。因此,当您使用 for page_data in csvfilelist: 对其进行迭代时,它会迭代字符串中的每个字符(字符串在 Python 中是可迭代的)。显然这不是一个有效的 url,因此 requests 会抛出异常。当您读入文件时,它应该看起来像这样

with open('gymsfinal.csv') as f:
reader = csv.reader(f)
csvfilelist = [ row[0] for row in reader ]

您还应该更改从 get_page_data() 返回网址的方式。目前,您只需归还第一汤。为了让它返回所有汤的生成器,您所需要做的就是将 return 更改为 yieldGood resource on yield and generators .

您的打印语句也会出现问题。它们应该要么进入一个类似于 for soup in pages: 的 for 循环,要么进入 get_page_data() 。在这些打印的上下文中没有定义变量 soup

关于python - 从 csv 文件中的 url 检索数据 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32833375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com