我想学习如何抓取网页并在此处找到有趣的代码: http://nycdatascience.com/okcupid-scraper/ 它不起作用,但稍微适应我可以让它“几乎”工作,但我仍然坚持一点。
你能帮我吗?
我的python代码为:
session = requests.Session()
session.auth = ('XXXX@gmail.com', 'XXXXX')
session.headers.update({'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'})
req = session.post('https://www.okcupid.com/login',\
data={'username': 'XXXX', 'password':'XXXX'})
url = 'http://www.okcupid.com/match?filter1=0,48&filter2=2,100,18&filter3=5,2678400&filter4=1,1&locid=0&timekey=1&matchOrderBy=SPECIAL_BLEND&custom_search=0&fromWhoOnline=0&mygender=m&update_prefs=1&sort_type=0&sa=1&using_saved_search=&count=30'
page = session.get(url).text
有两件事很奇怪:
1)此代码有效,我确实得到了html代码并且我已登录,因此cookie /会话有效。但是,如果我等待5秒钟并打电话 url ='http://www.okcupid.com/match?filter1=0,48&filter2=2,100,18&filter3=5,2678400&filter4=1,1&locid=0&timekey=1&matchOrderBy=SPECIAL_BLEND&custom_search=0&fromWhoOnline=0&mygender=m&update_prefs=1&sort_type=0&sa=1&using_saved_search=&count=30' page = session.get(url).text 再次,页面不再认出我了。 Cookie或会话有问题吗?
2)我没有得到我想要的信息;我感兴趣的主要信息在我得到的html代码中缺失:
<div class="match_card_text"> <div class="profile_info">
<div class="username"> <a class="name">Loading User</a> </div>
我得到“正在加载用户”,其中应该是真实的信息。如果我在Chrome中打开页面并查看html源代码,那么html代码中就会出现我想要的信息,而不是“正在加载用户”。我如何获得该信息?