学习Python硒自动化网页抓取器

  

直接入正题——python硒自动控制浏览器对网页的数据进行抓取,其中包含按钮点击,跳转页面,搜索框的输入,页面的价值数据存储,mongodb自动id标识等等等。

  

1,首先介绍一下Python硒——自动化测试工具,用来控制浏览器来对网页的操作,在爬虫中与BeautifulSoup结合那就是天衣无缝,除去国外的一些变态的验证网页,对于图片验证码我有自己写的破解图片验证码的源代码,成功率在85% .

  

详情请咨询QQ群——607021567(这不算广告,群里有好多Python的资源分享,还有大数据的一些知识【hadoop】)

  

2, beautifulsoup就不需要详细的介绍了,直接上网址::https://www.crummy.com/software/BeautifulSoup/bs4/doc/(beautifulsoup的官方文档)

  

3,关于mongodb的自动id的生成.mongodb中所有的存储数据都是有固定的id的,但是mongodb的id对于人类来讲是复杂的,对于机器来讲是小菜一碟的,所以在存入数据的同时,我习惯用新id来对每一条数据的负责!

  

在Python中使用mongodb的话需要引进模块从pymongo进口MongoClient升序、降序,该模块就是你的责任。

  

接下来开始讲程序,直接上实例(一步一步来):

  

引入模块:

        从硒进口webdriver   从bs4进口BeautifulSoup   进口的要求   从进口MongoClient pymongo,升序、降序   导入的时间   进口re      

其中的每一个模块都会说已经解释过了,其中的再保险公司请求都是之前就有提过的,他们都是核心缺一不可!

  

首先,我举一个小例子,淘宝的自动模拟搜索功能(源码):

  

先说一下硒的定位方法

        find_element_by_id   find_element_by_name   find_element_by_xpath   find_element_by_link_text   find_element_by_partial_link_text   find_element_by_tag_name   find_element_by_class_name   find_element_by_css_selector      

源码:         从硒进口webdriver   从bs4进口BeautifulSoup   进口的要求   从进口MongoClient pymongo,升序、降序   导入的时间   进口再保险   def淘宝():   试一试:   Taobaourl=' https://www.taobao.com/'   司机=webdriver.Chrome ()   driver.get (Taobaourl)   time . sleep(5) #通常这里需要停顿,不然你的程序很有可能被检测到是蜘蛛   文本=白澈骸?输入的内容   driver.find_element_by_xpath('//输入[@class=" search-combobox-input "]”) .send_keys(文本).click ()   司机。find_element_by_xpath(“//按钮[@class=" btn-search tb-bg“]”) .click ()   driver.quit ()   除了例外,e:   打印e   if __name__==癬_main__”:   淘宝()      

效果的实现,你们可以直接复制后直接运行!我只用了xpath的这个方法,因为它最实在!橙色字体(如果我没有色盲的话),就是网页中定位的元素,可以找到的!

  

接下来就是与BeautifulSoup的结合了,但是我们看到的只是打开了网页,并没有源码,那么就需要“变量名.page_source”这个方法,他会实现你的梦想,你懂得& # 63;

        ht=driver.page_source   #打印ht你可以打印出啦看看   “html.parser”汤=BeautifulSoup (ht)      

下面就是BeautifulSoup的一些语法操作了,对于数据的结构还有采集,在上一篇里面有详细的抓取操作! ! !

  

算了!说一个最简单的定位抓取:

        “html.parser”汤=BeautifulSoup (ht)   一个=soup.find(“表”,id=癱tl00_ContentMain_SearchResultsGrid_grid”)   如果一个:#必须加判断,不然访问的网页或许没有这一元素,程序就会都停止!      

类的标签必须是class_,一定要记住!

  

哈哈哈! mongodb了昂,细节细节,首先需要用到模块——从pymongo进口MongoClient升序、降序

  

因为在python, mongodb的语法仍然实用,所以需要定义一个库,并且是全局性的,还有链接你计算机的一个全局变量。

        if __name__==癬_main__”:   全球db #全局变量   全球表#全局数据库   表=' mouser_product '   mconn=MongoClient (mongodb://localhost) #地址   db=mconn.test   db.authenticate(“测试”、“测试”)#用户名和密码   淘宝()      

定义这些后,需要我们的新id来对数据的跟踪加定义:

        db.sn。find_and_modify (} {" _id ":表,更新={" $公司”:{“currentIdValue”: 1}}, upsert=True)   dic=db.ids.find ({" _id ":表}).limit (1)   返回dic [0] . get (currentIdValue)

学习Python硒自动化网页抓取器