使用python从网站抓取数据

时间:2014-08-23 14:26:19

标签: python python-3.x web-crawler

我想从网站抓取一些数据。要手动访问目标数据,我需要登录然后单击某些按钮以最终获取目标html页面。目前,我正在使用Python request库来模拟此过程。我这样做:

ss = requests.session()
#log in
resp = ss.post(url, data = (('username', 'xxx'), ('password', 'xxx')))
#then send requests to the target url
result = ss.get(taraget_url)

然而,我发现最后的请求没有归还给我我想要的东西。

所以我改变了方法。我下载所有网络流量并查看上一个请求的标头和cookie。我发现这里有一些内容在每次登录会话中都有所不同,比如sessionid和其他一些变量。因此,当在响应中返回这些varibales时,我会追溯,然后通过发送相应的请求再次获取值。在此之后,我构建了正确的标头和cookie,然后发送这样的请求:

resp = ss.get(target_url, headers = myheader, cookies = mycookie)

但是,它仍然没有给我任何回报。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

前段时间我在同一条船上,我最终转而尝试使用Selenium,这让生活更加轻松。 (pip install selenium)。然后,您可以登录网站,然后导航到所需的网站:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

website_with_logins = "https://website.com"
website_to_access_after_login = "https://website.com/page"

driver.get( str(website_with_logins) )
username = driver.find_element_by_name("username")
username.send_keys("your_username")
password = driver.find_element_by_name("password")
password.send_keys("your_password")
password.send_keys(Keys.RETURN)
driver.get( str(website_to_access_after_login) )

一旦你加载website_to_access_after_login(你会看到它出现),你就可以获得html,只需使用

html = driver.page_source

希望这有帮助。

相关问题