如何通过删除部分URL来解析数据

时间:2013-04-30 10:14:23

标签: python csv urllib2

我有一个保存在csv文件中的列表,我想从网站下载一些数据,如下所示:

http://www.ncbi.nlm.nih.gov/pubmed/23626827

我想编写一个python脚本来打开url,从csv文件中我已经存储了数字列表,这是在pubmed之后,将所有数据下载到另一个csv文件中。

所以我必须使用urllib2,循环和字符串,但我不能正确。

我不是要求整个剧本,只是请帮助我开始,或者提出一个想法。

非常感谢!

2 个答案:

答案 0 :(得分:1)

以下是一个简单示例,介绍如何通过csv读取带有数字(ID)的输入csv,通过urllib2加载内容,通过lxml解析内容并写入输出csv文件:

import urllib2
import csv
import lxml.html


URL = "http://www.ncbi.nlm.nih.gov/pubmed/"

# read IDs from the input csv file
with open('input.csv', 'r') as csvfile:
    numbers = [row[0] for row in csv.reader(csvfile)]

# get the article and collect it's title for each ID
output = []
for number in numbers:
    response = urllib2.urlopen(URL + number)
    html = response.read()

    tree = lxml.html.document_fromstring(html)
    output.append(tree.xpath('//div[@class="rprt abstract"]/h1')[0].text)

# write article titles to the output csv
with open('output.csv', 'w') as csvfile:
    csvwriter = csv.writer(csvfile)
    for row in output:
        csvwriter.writerow([row])

input.csv内容:

23626827
23626828
23626829

您将在output.csv中的每一行获得文章标题。

希望有所帮助。

答案 1 :(得分:0)

读取csv文件并获取数据:

f=open('yourCSV.csv','rb')
try:
   reader = csv.reader(f)
   for row in reader:
       print row[0]
finally:
   f.close()

然后将其添加到网址