2015-09-29 56 views
0

在.py文件中,我有一个存储url列表的变量。如何正确构建循环以从每个url检索代码,以便我可以从每个页面提取特定的数据项目?如何查看网址列表以检索页面数据 - Python

这是我到目前为止已经试过:

import requests 
import re 
from bs4 import BeautifulSoup 
import csv 

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

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

pages = get_page_data() 
print pages 
+0

添加的代码我目前得到了 – McLeodx

+0

您不调用'get_page_data'。你也循环遍历'csvfilelist'这是一个字符串(所以你正在循环每个字符),你可以把它改成'csvfilelist.splitlines()'来遍历每一行。 – solarc

+0

谢谢,这工作。现在它只是从第一个网址提取代码。我需要做什么来重复所有的网址? – McLeodx

回答

1

通过不使用csv模块,您正在阅读的gymsfinal.csv文件为文本文件。请阅读有关读取/写入csv文件的文档:CSV File Reading and Writing

此外,您将只从您当前的代码中获得第一页的soup内容。因为get_page_data()函数将在创建第一个汤之后返回。对于当前的代码,你可以从yield功能类似,

def get_page_data(): 
    for page_data in csvfilelist.splitlines(): 
     r = requests.get(page_data.strip()) 
     soup = BeautifulSoup(r.text, 'html.parser') 
     yield soup 

pages = get_page_data() 

# iterate over the generator 
for page in pages: 
    print pages 

同时关闭刚才打开的文件。