• 正文概述
  • 评价建议
  • 免费资源猫-爱分享的猫。

    最近小编在弄python爬虫项目,可能大家一听爬虫,就觉得高大上,其实爬虫并没有多难,只要你稍微研究一下,掌握了基础的东西,后续爬虫就是重复利用的事情了。今天给大家来一下普及,希望你都能掌握

     

    01

    搭建环境

    既然是python爬虫,自然先要安装好python环境,从事技术的人都知道开发IDE,其实小编其实有不是必须的,只要是文本编辑器都可以,当然对于小白还是建议安装IDE,这样能减少不少配置的工作。

     

    这里就推荐搭建下载安装一下:PyCharm

    具体安装下载地址和安装就不赘述了。

     

    下载安装完,会让你选择python库的版本,根据自己的需要进行下载安装。

    安装成功后,基本你的python基础环境就有了,可以在python console窗口查看自己的python版本,和运行命令

     

    02

    开始编码

    首先工具引用库 (前提是你安装的是python3.x版本)

     

    pip3 install requestspip3 install my_fake_useragentpip3 install python-docxpip3 install opencv-pythonpip3 install python-pptxpip3 install seleniumpip3 install scrapypip3 install beautifulsoup4

     

    有了这些库之后,就可以进入正式的逻辑

     

    首先给大家讲下整个项目的原理,其实整理一句话就是,用代码控制浏览器,然后操作浏览器去模拟人的操作,然后在利用截图,下载等方式将内容保存下来的过程。

     

    既然是控制浏览器,那必不可少的就是下载浏览器的执行文件

     

    本文使用的是浏览器chrome谷歌浏览器,我相信大家用这个浏览器的人还是大多数的。

     

    chromedriver下载地址:http://npm.taobao.org/mirrors/chromedriver/ 这个地址下载对应版本的chromedriver,比如你的浏览器版本是87.0.4280,你就可以找到87.0.4280.20/这个链接,如果你是windows版本然后选择chromedriver_win32.zip

    也就是说是通过chromeDriver去打开你本地的chrome浏览器,然后模拟操作,所有就需要下载对应好你本地安装的版本。

     

    新建download_doc_ppt_bdwk.py,是本工具的主要类

     

    新建启动main

    if __name__ == "__main__":start_chrome = StartChrome()# start_chrome.create_doc_txt(doc_dir_path)    start_chrome.create_ppt_doc(ppt_dir_path, doc_dir_path)#start_chrome.test(ppt_dir_path, doc_dir_path)# start_chrome.brower.quit()

    先启动一个chrome

     

    def __init__(self):mobile_emulation = {"deviceName": "Galaxy S5"}capabilities = DesiredCapabilities.CHROMEcapabilities['loggingPrefs'] = {'browser': 'ALL'}options = webdriver.ChromeOptions()# 无界 Chrome 运行# options.add_argument('--headless')# options.add_argument('--disable-gpu')# options.add_argument('--window-size=1366,768')options.add_experimental_option("mobileEmulation", mobile_emulation)self.brower = webdriver.Chrome(executable_path=chromedriver_path, desired_capabilities=capabilities,chrome_options=options)# 启动浏览器,打开需要下载的网页self.brower.get(url)self.download_img = DownloadImg()

    浏览器可以无界面运行,就是我的电脑不会显示对应的打开一个浏览器界面,也可以显示,如下:

     

    就会显示一个chrome正在受控于自动化测试的界面,然后我们可以看到浏览器已经帮我们打开了对应的页面

     

    先讲一下xpath,这个是整个程序的理解重点,理解了整个基本完成一大半了

     

    def click_ele(self, click_xpath):# 单击指定控件click_ele = self.brower.find_elements_by_xpath(click_xpath)if click_ele:click_ele[0].location_once_scrolled_into_view  # 滚动到控件位置self.brower.execute_script('arguments[0].click()', click_ele[0])  # 单击控件,即使控件被遮挡,同样可以单击

     

    浏览器打开页面之后,我们要做的就是模拟操作对吧,那模拟操作的肯定是界面上的按钮点击或者表单之类的,那怎么找到我们要的控件呢

    find_elements_by_xpath,这个就很重要了,根据函数其实能理解,就是通过xpath去查找对应的元素,其实有个技术基础的人,基本也明白,无外乎findByID, findByTag,findByName等等,在这么方法中,xpath算是相对灵活的一种方式

     

    Selenium提供了以下方法用来定位

     

    • 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

     

    本工具使用find_element_by_xpath进行定位元素的,具体xpath的语法可能需要你自行百度学习一番了,自然不是本文要阐述的事情。

     

    大家也可以看到,打开页面之后有各种弹屏,所以就要定位弹屏的关闭按钮,然后模拟点击进行关闭,同时文档预览就需要不断的点击分页按钮,让我们能预览所有,因此就需要如下代码

    # 点击关闭开通会员按钮xpath_close_button = "//div[@class='guide-to-univer-app-pop']/div[@class='close-btn']"self.click_ele(xpath_close_button)# 点击取消打开百度app按钮xpath_next_content_button = "//div[@class='btn-wrap']/div[@class='btn-cancel']"self.click_ele(xpath_next_content_button)# 点击继续阅读xpath_continue_read_button = "//div[@class='foldpagewg-icon']"self.click_ele(xpath_continue_read_button)# 循环点击加载更多按钮,直到显示全文click_count = 0while True:# 如果到了最后一页就跳出循环if self.brower.find_elements_by_xpath("//div[@class='pagerwg-loadSucc hide']") or self.brower.find_elements_by_xpath("//div[@class='pagerwg-button' and @style='display: none;']"):break# 点击加载更多xpath_loading_more_button = "//span[@class='pagerwg-arrow-lower']"self.click_ele(xpath_loading_more_button)click_count += 1print("第{}次点击加载更多!".format(click_count))# 等待一秒,等浏览器加载time.sleep(1.5)

    等这些都正常完成之后,就是完整的展示了文档的界面了,剩下的就是根据文档的类型,做不同的抓取逻辑

    # 获取html内容sel = Selector(text=self.brower.page_source)#判断文档类型xpath_content = "//div[@class='file-type-icon file-icon ppt']"contents = sel.xpath(xpath_content).extract()if contents:#如果是pptself.create_ppt(ppt_dir_path, sel)else:#如果是docself.create_doc(doc_dir_path, sel)# a = 3333self.brower.quit()

     

    ppt或者pdf其实原理是一样的,预览的时候就是一张张图片,我们要做的就是把图片都保存下来,然后在图片保存到一个文件中,最终生成ppt或者pdf

     

    文本或者word就更简单,就是获取html中的文本信息,当然一般word文档中的格式可能就需要更细致的研究才能更高的还原,本工具暂未有细化这些功能,当然如果后续有时间,我会单独出一期对应教程。如果大家需要的话,呵呵。

     

    03

    效果演示

     

    图片

     

     

    需要的小伙伴,识别下面的二维码,关注后回【046】即可速取!你懂!

     

    识别二维码,回复:046

    图片

    特别声明:原创产品提供以上服务,破解产品仅供参考学习,不提供售后服务(未做杀毒检测),如有需求,建议购买正版!如果源码侵犯了您的利益请留言告知!
    免费资源猫 » [原创]免费工具-手把手教你Python+selenium爬虫百度文库

    发表评论

    Hi, 如果你对资源有疑问,可以跟我联系哦!

    联系客服

    资源免费下载

    立即查看 了解详情