#!/usr/env/bin python
import urllib2
from bs4 import BeautifulSoup
with open('00_Trump_05_May_2016.csv', 'r') as csv:
next(csv)
for line in csv:
line = line.strip()
permalink = line.split(',')[-1].strip()
username = line.split(',')[0]
userid = permalink.split('/')[3]
page_url = 'http://twitter.com/{0}'.format(userid)
try:
page = urllib2.urlopen(page_url)
except urllib2.HTTPError:
print 'ERROR: username {} not found'.format(username)
content = page.read()
html = BeautifulSoup(content)
location = html.select('.ProfileHeaderCard-locationText')[0].text.strip()
print 'username {0} ({1}) located in {2}'.format(username, userid, location)
输出:
username cenkuygur (cenkuygur) located in Los Angeles
username ilovetrumptards (ilovetrumptards) located in
username MorganCarlston hanifzk (MorganCarlston) located in
username mitchellvii (mitchellvii) located in Charlotte, NC
username MissConception0 (MissConception0) located in #UniteBlue in Semi-Red State
username HalloweenBlogs (HalloweenBlogs) located in Los Angeles, California
username bengreenman (bengreenman) located in Fiction and Non-Fiction Both
...
我要做的就是报废twitter.com/而不是使用twitter API。你知道吗
主要原因是前端没有查询限制(或者至少没有那么限制),即使你需要在几秒钟内调用twitter太多时间,你也可以使用用户代理和代理来避免被发现。你知道吗
所以对我来说,报废是绕过API限制的最简单的方法。你知道吗
此外,你需要的爬行是非常容易访问,我做了一个简单的'n'肮脏的代码,解析你的csv文件和用户的输出位置。你知道吗
为了好玩,我会在你的回购上做一个公关,但代码如下:
输出:
显然,您应该更新此代码以使其更健壮,但基本的工作已经完成。你知道吗
PS:我解析“permalink”字段,因为它存储格式良好的slug,以便访问profil的页面。它很脏,但很快&它能工作
关于googleapi,我肯定会使用一种缓存/数据库来避免太多google调用。你知道吗
在python中,如果没有db,您只需生成如下dict:
对于要解析的每个位置,我首先检查这个dict是否存在键,如果是,从这里取我的值,否则调用googleapi,然后将值保存在db dict中
我认为有了这两种方法,你就能得到你的数据。你知道吗
相关问题 更多 >
编程相关推荐