我想从 https 网站上进行网络抓取,我必须在该网站上登录才能获取信息。
这是我的(第一部分)代码:
import requests
from lxml import html
import urllib2
from bs4 import BeautifulSoup
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
import MySQLdb
url = 'https://www.opten.hu/'
values = {'user': 'MYUSERNAME',
'password': 'MYPASSWORD'}
r = requests.post(url, data=values)
params = {'Category': 6, 'deltreeid': 6, 'do': 'Delete Tree'}
url = 'https://www.opten.hu/cegtar/cegkivonat/0910000511'
result = requests.get(url, data=params, cookies=r.cookies)
print result
如果我运行它并打印结果,我会得到“Response [200]”,所以没问题,服务器成功响应了 http 请求。
在我想浏览此网站上的其他菜单项后,我可以在其中找到对我有值(value)的信息。 (称为 url)
我怎样才能抓取这个页面,我的代码有什么问题?
import requests
from lxml import html
import urllib2
from bs4 import BeautifulSoup
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
import MySQLdb
url = 'https://www.opten.hu/'
values = {'user': 'MYUSERNAME',
'password': 'MYPASSWORD'}
r = requests.post(url, data=values)
params = {'Category': 6, 'deltreeid': 6, 'do': 'Delete Tree'}
url = 'https://www.opten.hu/cegtar/cegkivonat/0910000511'
result = requests.get(url, data=params, cookies=r.cookies)
print result
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
print soup
最佳答案
您正在使用 urllib2
阅读内容。它会向 url 发出另一个请求以获取数据,但不会使用您在上一个请求中获得的 cookie。
试试下面的代码。我已经使用 requests.Session
来保存 cookie,您现在不需要 urllib2
。
# Author: Swapnil Mahajan
import requests
from lxml import html
import urllib2
from bs4 import BeautifulSoup
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
import MySQLdb
url = 'https://www.opten.hu/ousers/loginuser'
values = {'user': 'MYUSERNAME',
'password': 'MYPASSWORD'}
session = requests.Session()
r = session.post(url, data=values)
params = {'Category': 6, 'deltreeid': 6, 'do': 'Delete Tree'}
url = 'https://www.opten.hu/cegtar/cegkivonat/0910000511'
result = session.get(url, data=params)
soup = BeautifulSoup(result.text, "lxml")
print soup
关于Python 2.7 从登录网站抓取网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44645311/