利用Python写一个爬妹子的爬虫

  

  

最近学完Python,写了几个爬虫练练手,网上的教程有很多,但是有的已经不能爬了,主要是网站经常改,可是爬虫还是有通用的思路的,即下载数据,解析数据,保存数据。下面一一来讲。
  

  

  

首先打开要爬的网站,分析URL,每打开一个网页看URL有什么变化,有可能带上上个网页的某个数据,例如xxID之类,那么我们就需要在上一个页面分析HTML,找到对应的数据。如果网页源码找不到,可能是ajax异步加载,去xhr里去找。

  

, 利用Python写一个爬妹子的爬虫”> <br/>
  </p>
  <p>有的网站做了反爬的处理,可以添加用户代理:判断浏览器</p>
  
  <pre类=   自我。user_agent=' Mozilla/4.0 (compatible;MSIE 5.5;Windows NT) '   #初始化标头   自我。头={“用户代理”:self.user_agent}      

如果不行,在Chrome上按F12分析请求头,请求体,看需不需要添加别的信息,例如有的网址添加了推荐人:记住当前网页的来源,那么我们在请求的时候就可以带上。按Ctrl + Shift + C,可以定位元素在HTML上的位置

  

  

有一些网页是动态网页,我们得到网页的时候,数据还没请求到呢,当然什么都提取不出来,用Python解决这个问题只有两种途径:直接从JavaScript代码里采集内容,或者用Python的第三方库运行JavaScript,直接采集你在浏览器里看到的页面。
  

  

1。找请求,看返回的内容,网页的内容可能就在这里。然后可以复制请求,复杂的网址中,有些乱七八糟的可以删除,有意义的部分保留。切记删除一小部分后先尝试能不能打开网页,如果成功再删减,直到不能删减。
  

  

2。硒:是一个强大的网络数据采集工具(但是速度慢),其最初是为网站自动化测试而开发的。近几年,它还被广泛用于获取精确的网站快照,因为它们可以直接运行在浏览器上.Selenium库是一个在WebDriver上调用的API。

  

WebDriver有点儿像可以加载网站的浏览器,但是它也可以像BeautifulSoup对象一样用来查找页面元素,与页面上的元素进行交互(发送文本,点击等),以及执行其他动作来运行网络爬虫。
  

  

PhantomJS:是一个“无头”(headless)浏览器。它会把网站加载到内存并执行页面上的JavaScript,但是它不会向用户展示网页的图形界面。把硒和PhantomJS结合在一起,就可以运行一个非常强大的网络爬虫了,可以处理cookie, JavaScript,头,以及任何你需要做的事情。

  


  

  

请求相比其他俩个的话,支持HTTP连接保持和连接池,支持使用饼干保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和帖子数据自动编码,而且api相对来说也简单,但是请求直接使用不能异步调用,速度慢。

        html=请求。get (url,标题=头)#没错,就是这么简单      

<强> urllib2以我爬取淘宝的妹子例子来说明:,

  

<强> 利用Python写一个爬妹子的爬虫

        user_agent=' Mozilla/4.0 (compatible;MSIE 5.5;Windows NT) '   头={“用户代理”:user_agent}   #注意:表单数据请求参数   params=' q& viewFlag=第一部;sortType=default& searchStyle=, searchRegion=% 3第一部城市;searchFansNum=,当前页=1,页大?100”         def getHome ():   url=' https://mm.taobao.com/tstar/search/tstar_model.do& # 63; _input_charset=utf - 8 '   要求=urllib2。请求(url,标题=标题)   #解码(utf - 8)解码把其他编码转换成unicode编码   #编码(gbk)编码把unicode编码转换成其他编码   #“gbk”.decode (gbk) .encode (“utf - 8”)   # unicode=中文   # gbk=英文   # utf - 8=日文   #英文一比;中文一比;日文,unicode相当于转化器   html=urllib2。urlopen(点播,data=https://www.yisu.com/zixun/params) .read () .decode (gbk) .encode (“utf - 8”)   # json转对象   人民=json.loads (html)   我的人民(“数据”)(“searchDOList”):   #去下一个页面获取数据   getUseInfo(我“标识”,[' realName '])      

  

解析数据也有很多方式,我只看了beautifulsoup和正则,这个例子是用正则来解析的

        def getUseInfo (userId, realName):   url=https://mm.taobao.com/self/aiShow.htm& # 63;用户id=? str(标识)   要求=urllib2.Request (url)   html=urllib2.urlopen(点播).read () .decode (gbk) .encode (“utf - 8”)      模式=re.compile (' & lt; img。* & # 63; src=https://www.yisu.com/zixun/(. * ?)/> ', re.S)   项=re.findall (html)模式,   x=0   项目的项目:   如果re.match (r。”* (. jpg”)的美元,item.strip ()):   tt=' http: ' + re.split (‘”’, item.strip ()) [1]   down_image (tt, x, realName)   x=x + 1   打印(“下载完毕”)

利用Python写一个爬妹子的爬虫