我正在尝试创建一个脚本,该脚本将带有多行YouTube用户名的.txt文件添加到YouTube用户主页网址,然后抓取以获取个人资料数据。
下面的代码为我提供了一个用户想要的信息,但我不知道从哪里开始导入和迭代多个URL。
#!/usr/bin/env python
# -- coding: utf-8 --
from bs4 import BeautifulSoup
import re
import urllib2
# download the page
response = urllib2.urlopen("http://youtube.com/user/alxlvt")
html = response.read()
# create a beautiful soup object
soup = BeautifulSoup(html)
# find the profile info & display it
profileinfo = soup.findAll("div", { "class" : "user-profile-item" })
for info in profileinfo:
print info.get_text()
有人有任何建议吗?
例如,如果我有一个读取的.txt文件:
username1
username2
username3
etc.
我怎样才能重复这些内容,将它们附加到http://youtube.com/user/%s,并创建一个循环来提取所有信息?
答案 0 :(得分:2)
如果您不想使用实际的刮擦模块(如scrapy,mechanize,selenium等),您可以继续迭代您所编写的内容。
for line in file_obj
。+
,但您也可以使用连接功能。制作网址列表 - 会让您错开请求,这样就可以compassionate screen scraping.
# Goal: make a list of urls
url_list = []
# use a try-finally to make sure you close your file.
try:
f = open('pathtofile.txt','rb')
for line in f:
url_list.append('http://youtube.com/user/%s' % line)
# do something with url list (like call a scraper, or use urllib2
finally:
f.close()
答案 1 :(得分:0)
您需要打开文件(最好使用with open('/path/to/file', 'r') as f:
语法),然后在循环中执行f.readline()
。将readline()的结果分配给类似" username"的字符串。然后在循环中运行当前代码,从response = urllib2.urlopen("http://youtube.com/user/%s" % username)
开始。