2015-12-16 43 views
1

美好的一天! 我目前正在为阿里巴巴网站制作一个网页抓取工具。 我的问题是返回的源代码没有显示我感兴趣的某些部分。当我使用浏览器检查源代码时,数据在那里,但使用BeautifulSoup时无法检索。 任何提示?使用BeautifulSoup进行网页扫描:检索网站的源代码

从BS4进口BeautifulSoup

def make_soup(url): 
    try: 
     html = urlopen(url).read() 
    except: 
     return None 
    return BeautifulSoup(html, "lxml") 

URL = “http://www.alibaba.com/Agricultural-Growing-Media_pid144” soup2 = make_soup(URL)

我感兴趣的高亮部分为使用Chrome的开发者工具显示在图像中。但是当我尝试在文本文件中写入时,某些部分(包括突出显示的部分)无处可查。有小费吗? TIA!

enter image description here

+2

他们可能会在js客户端做一些动态的文档写作,也许是为了回应您尚未做出的AJAX请求。 – polhemic

+0

在代码块的代码块部分之下是两个分配吗? – Lori

回答

0

您需要至少提供User-Agent头。

实施例使用requests package代替urllib2

import requests 
from bs4 import BeautifulSoup 

def make_soup(url): 
    try: 
     html = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36"}).content 
    except: 
     return None 
    return BeautifulSoup(html, "lxml") 

url = "http://www.alibaba.com/Agricultural-Growing-Media_pid144" 
soup = make_soup(url) 

print(soup.select_one("a.next").get('href')) 

打印http://www.alibaba.com/catalogs/products/CID144/2

+1

嗨!我在运行程序时遇到此错误。 AttributeError:'NoneType'对象没有属性'get' – ryangph