c爬虫抓取网页数据(前段时间写了爬取美团商家信息的博客爬虫抓取美团网上)

优采云 发布时间: 2021-09-20 22:02

  c爬虫抓取网页数据(前段时间写了爬取美团商家信息的博客爬虫抓取美团网上)

  前段时间,我写了一篇关于抓取美团商业信息的博客。爬虫会抓取美团所有的商业信息。这一次,我说的是爬行糯米。由于某些原因,我无法提供源代码。然而,代码不是关键,关键是思想。理解了这个思想之后,代码就很容易编写了

  对于爬虫来说,最重要的是根据实际的请求过程分析请求过程和请求数据

  分析是否需要处理cookie。有些网站是严格的。从某些接口请求数据时需要cookie。获取cookies的链接通常是主页。通常,系统将有一个jsessionid来维护会话。由于您访问一个页面,服务器将向您返回此jsessionid,但是如果您访问一些没有此cookie的接口,服务器将不会向您返回数据。您可以看到我之前写的关于使用Python对12306以上的所有车次数据进行爬网的内容。爬行12306时需要处理Cookie

  分析网站的请求限制,因为爬虫程序将增加其服务器压力、流量浪费和数据丢失。因此,许多网站将对请求数量进行限制。然而,由于他们的数据是开放的,他们可以爬行。这只是成本问题。一般来说,他们会根据IP限制请求,当请求达到一定次数时会有一个验证码。例如,攀爬天眼检查数据时会遇到此问题。你可以使用代理。现在获得代理既容易又便宜

  是否通过Ajax加载网站分析的数据,返回的数据是否加密。通常,这种情况可以由没有界面的浏览器请求,浏览器将自行处理这些事情

  抓取页面并解析所需数据更容易。页面已被捕获。您可以使用一些开源框架来解析页面中的数据,也可以使用常规框架

  下面分析如何在线获取糯米数据

  经过分析,发现糯米不需要处理cookies,没有Ajax加载,并且有请求限制,所以只需要使用代理

  我们现在分析如何抓取所有数据

  

  从链接中,我们可以猜测北京是北京,364是火锅的分类,307-1388是区域。提前采集这些数据,爬行回来时直接拼接,方便快捷

  

  

  我在这里只对城市进行分类,而不是地区,所以当我们攀登时,地区和商业区需要被处理。我们可以先拼接城市和分类,然后获得区/县

  然后遍历各区县,得到商圈,再遍历,最后得到团购数据

  # 区/县

def getArea(cityUrl,cityName,type,subType,subTypeCode):

url=cityUrl+"/"+subTypeCode

soup=download_soup_waitting(url)

try:

geo_filter_wrapper=soup.find("div",attrs={"class":"filterDistrict"})

J_filter_list=geo_filter_wrapper.find("div",attrs={"class":"district-list-ab"})

lis=J_filter_list.findAll("a")

for li in lis :

# a=li.find("a")

url='http:'+li['href']

area=li.text

getSubArea(url,area,cityName,type,subType)

except:

getBusiness(url,"","",cityName,type,subType)

# 商圈

def getSubArea(url,area,cityName,type,subType):

soup=download_soup_waitting(url)

geo_filter_wrapper=soup.find("div",attrs={"class":"district-sub-list-ab"})

if geo_filter_wrapper==None:

getBusiness(url,"",area,cityName,type,subType)

return

lis=geo_filter_wrapper.findAll("a")[1:]

for li in lis :

# a=li.find("a")

url=li['href']

subArea=li.text

getBusiness("http:"+url,subArea,area,cityName,type,subType)

  现在我们来分析团购信息

  

  可以发现,这不是一个商户,而是一个集团购买的商品,表明这些集团购买的许多商品都是同一个商户。我们把它分为两层,因为这一层依次是一个城市和一个类别。但是,没有通过团购获取商户信息的订单

  爬上这一层后,结果如下

  

  我们无法在这一层获得有关商户的更多详细信息,但我们可以通过此团购链接获得更多详细信息。我们将整理这些团购链接,然后在第二层爬行

  

  这是我们需要的数据,但在实际爬网过程中发现捕获的页面没有这些数据。您可以猜测它是通过Ajax加载的

  现在打开firebug并刷新页面

  

  我发现这和我的猜测是一样的。这些数据是通过Ajax加载的。检查链接,发现只要交易成功,就可以拼接链接

  最后,只需解析并保存捕获的数据

  在分析整个过程并编写代码后,可以让程序缓慢运行。我的数据运行了一个月才有结果。然后整理数据。最终数据如下:

  453792糯米食品数据

  

  149002糯米寿命数据

  

  糯米娱乐74932条数据

  

  诺米美容73123条数据

  

  数据总数为750849

  时间:20170404

  有关技术问题或此数据,请联系Zhenpeng_#Lin#替换为@

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线