python爬虫100例(五分钟带你学会Python网络爬虫,超详细附教程!)

wufei123 发布于 2024-02-03 阅读(119)

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的在学习之前,我们还是要先了解一下相关概念什么是爬虫网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。

大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取细分下来,业内分为两类:爬虫和反爬虫反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,甚至丢掉工作。

比如下面这张图,大家用心感受一下:

爬虫的基本原理

如上图所示,爬虫的第一个步骤就是对所要爬取的网页进行请求,以获取其相应返回的结果,然后在使用一些方法,对响应内容解析,提取想要的内容资源,最后,将提取出来的资源保存起来爬虫工具和语言选择一、爬虫工具工欲善其事必先利其器的道理相信大家都懂的,想要提升效率,一些常用的工具是必不可少的,以下就是个人推荐的几款工具:Chrome、Charles、Postman、Xpath-Helper

二、爬虫语言目前主流的Java、Node.js、C#、python等开发语言,都可以实现爬虫所以,在语言的选择上,你可以选择最擅长的语言来进行爬虫脚本的编写目前爬虫这块用的最多的是python,因为python语法简洁,方便修改,而且python里有多爬虫相关的库,拿过来就可以使用,网上的资料也比较多。

Python 爬虫Selenium库的使用一、基础知识首先要使用python语言做爬虫,需要学习一下python的基础知识,还有HTML、CSS、JS、Ajax等相关的知识这里,列出python中一些与爬虫相关的库和框架:。

1.1、urllib和urllib2 1.2、Requests 1.3、Beautiful Soup 1.4、Xpath语法与lxml库 1.5、PhantomJS 1.6、Selenium 1.7、PyQuery 1.8、Scrapy ...... 复制代码

因为时间有限,本文只介绍Selenium库的爬虫技术,像自动化测试,还有其它库和框架的资料,感兴趣的小伙伴可以自行学习二、Selenium基础2.1、Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

2.2、安装方式pip install Selenium 复制代码2.3、Selenium定位元素的8种方式

爬虫实例演示本案例的需求是:抓取豆瓣电影Top250电影信息。url:https://movie.douban.com/top250 复制代码

开发工具采用PyCharm,数据库采用sqlServer2012数据库表脚本:CREATE TABLE Movies ( Id INT PRIMARY KEY IDENTITY(1,1), Name NVARCHAR(20) NOT NULL DEFAULT , EName NVARCHAR(50) NOT NULL DEFAULT , OtherName NVARCHAR(50) NOT NULL DEFAULT , Info NVARCHAR(600) NOT NULL DEFAULT , Score NVARCHAR(5) NOT NULL DEFAULT 0, Number NVARCHAR(20) NOT NULL DEFAULT 0, Remark NVARCHAR(200) NOT NULL DEFAULT , createUser INT NOT NULL DEFAULT 0, createTime DATETIME DEFAULT GETDATE(), updateUser INT NOT NULL DEFAULT 0, updateTime DATETIME DEFAULT GETDATE() );。

爬虫的第一步,分析url,经过分析,豆瓣电影Top250页面的url有一定的规则:每页显示25条电影信息,url规则如下,以此类推。

接着,再对网页源码进行分析:

最后,编写爬虫脚本:import importlib import random import sys import time import pymssql from selenium import webdriver from selenium.webdriver.common.by import By # 反爬虫设置--伪造IP和请求 ip = [111.155.116.210, 115.223.217.216, 121.232.146.39, 221.229.18.230, 115.223.220.59, 115.223.244.146, 180.118.135.26, 121.232.199.197, 121.232.145.101, 121.31.139.221, 115.223.224.114] headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36", X-Requested-With: XMLHttpRequest, X-Forwarded-For: ip[random.randint(0, 10)], Host: ip[random.randint(0, 10)] } importlib.reload(sys) try: conn = pymssql.connect(host="127.0.0.1", user="sa", password="123", database="MySchool",charset="utf8") except pymssql.OperationalError as msg: print("error: Could not Connection SQL Server!please check your dblink configure!") sys.exit() else: cur = conn.cursor() def main(): for n in range(0, 10): count = n*25 url = https://movie.douban.com/top250?start=+str(count) j = 1 # if(n == 7): # j = 5 for i in range(j, 26): driver = webdriver.PhantomJS(desired_capabilities=headers) # 封装浏览器信息 driver.set_page_load_timeout(15) driver.get(url) # 加载网页 # data = driver.page_source # 获取网页文本 # driver.save_screenshot(1.png) # 截图保存 name = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/a/span")[0].text.replace(\, ) ename = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/a/span")[1].text.replace("/", "").replace(" ", "").replace(\, ) try: otherName = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/a/span")[2].text.lstrip( / ).replace("/", "|").replace(" ", "").replace(\, ) except: otherName = info = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/p")[0].text.replace("/", "|").replace(" ", "").replace(\, ) score = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/div/span[2]")[0].text.replace(\, ) number = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/div/span[4]")[0].text.replace("人评价", "").replace(\, ) remark = driver.find_elements(By.XPATH, "//ol/li["+str(i)+"]/div/div/div/p/span")[0].text.replace(\, ) sql = "insert into Movies(Name,EName,OtherName,Info,Score,Number,Remark) values("+name + \ ","+ename+","+otherName+","+info + \ ","+score+","+number+","+remark+") " try: cur.execute(sql) conn.commit() print("第"+str(n)+"页,第"+str(i)+"条电影信息新增成功") time.sleep(30) except: conn.rollback() print("新增失败:"+sql) driver.quit() if __name__ == __main__: main()

复制代码 成果展示:

最后,推荐一套Python视频,非常适合初学者和想深入了解Python语言的小伙伴,让你学习无忧!快速上手 Python 语言​it.qfedu.com/oa.php/Public/share?c2lkPTI5NzQ=

如果喜欢的话,欢迎关注+点赞+收藏哦!

亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻49637