Python web scraping:503对特定站点的响应(为什么?)

时间:2017-05-16 20:17:59

标签: python python-3.x selenium ipython python-requests

尝试学习python和web抓取一些网站。看看我能学到什么。我注意到Amazon.com会给我一个Response 503,除非我在SESSION.get()中使用了header属性。

但这对readcomiconline.to无效,无论我尝试什么,我都会Response 503。假设这与它的JavaScript预加载器有关。

有任何解决方法吗?

import requests 
urlAmazon = 'http://amazon.com'
urlComics = 'http://readcomiconline.to'
headerAgent = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}
client = requests.session()

resultOne = client.get(urlAmazon)
print(resultOne) #<Response [503]>
resultOne = client.get(urlAmazon, headers=headerAgent)
print(resultOne) #<Response [200]>

resultTwo = client.get(urlComics)
print(resultTwo) #<Response [503]>
resultTwo = client.get(urlComics, headers=headerAgent)
print(resultTwo) #<Response [503]>

尝试使用Selenium并仍然收到503错误。任何方式围绕javascript做一个适当的网页刮?

import bs4, requests
from selenium import webdriver
from lxml import html

headerAgent = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}

res = requests.get('http://readcomiconline.to/Comic/Saga/Issue-1 &readType=1',headers=headerAgent)
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text, "lxml")
comicElement = soup.find('table', {'class':'listing'})

1 个答案:

答案 0 :(得分:0)

关于selenium的最好的事情是它可以使用execute_script('script')模拟脚本执行的操作。对于内容由JS呈现的网站,最好的方法是了解JS如何呈现内容。跟踪XHR并检查响应,看它是否返回您需要的内容。