使用Python,我试图抓住一个房地产网站获取有关公寓的信息。我需要的所有信息都是存储在页面头部的一个javascript变量(ava_data)。
我在cloud9(在线IDE)工作,我宁愿不切换它。 我用美丽的汤来刮。
from bs4 import BeautifulSoup
import os
import requests
url = 'http://www.seloger.com/list.htm?idtt=1&idtypebien=1,2&ci=750120,750114&tri=initial&naturebien=1&nb_pieces=2&pxmax=1250&surfacemin=40'
seloger_html = requests.get(url)
soup = BeautifulSoup(seloger_html.text,'html.parser')
path = os.getcwd() + '/COMPLET/scrap_seloger.txt'
f = open(path, 'w')
f.write(soup.prettify().encode('utf8'))
我无法始终从汤中获取所有信息。为了验证这一点,我在txt文件中写了美化汤
当它工作时,我得到以下文件(与Chrome中的Inspection相同):https://ufile.io/eue0b
如果没有,我会收到以下信息:https://ufile.io/f1dnx
我已经设法从几十次试验中获得正确的文件4-5次。从我所知道的,我第一次尝试使用urllib.urlopen()并且第一次尝试使用requests.get()时,这是正确的。据我所知,在其他时间工作之前我还没有做过任何特别的事情。每次它起作用,它都会在下一次失败。
答案 0 :(得分:0)
该网站正在使用一些防刮技术。您必须设置User-Agent
标头以伪造浏览器访问。
url = 'http://www.seloger.com/list.htm?idtt=1&idtypebien=1,2&ci=750120,750114&tri=initial&naturebien=1&nb_pieces=2&pxmax=1250&surfacemin=40'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0'}
seloger_html = requests.get(url, headers=headers)
也尽量不要刮得太快。