pythonb爬虫(五分钟教会你学会Python网络爬虫)

wufei123 发布于 2024-01-26 阅读(111)

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

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

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

爬虫的基本原理

如上图所示,爬虫的第一个步骤就是对所要爬取的网页进行请求,以获取其相应返回的结果,然后在使用一些方法,对响应内容解析,提取想要的内容资源,最后,将提取出来的资源保存起来入门Python其实很容易,但是我们要去坚持学习,每一天坚持很困难,我相信很多人学了一个星期就放弃了,为什么呢?其实没有好的学习资料给你去学习,你们是很难坚持的,这是小编收集的Python入门学习资料关注,转发,私信小编“资料”,即可免费领取!希望对你们有帮助。

爬虫工具和语言选择一、爬虫工具工欲善其事必先利其器的道理相信大家都懂的,想要提升效率,一些常用的工具是必不可少的,以下就是个人推荐的几款工具: 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、BeautifulSoup 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 Selenium2.3、Selenium定位元素的8种方式

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

开发工具采用PyCharm,数据库采用sqlServer2012数据库表脚本:CREATETABLE Movies ( IdINT PRIMARY KEYIDENTITY(1,1), Name

NVARCHAR(20) NOTNULLDEFAULT , EName NVARCHAR(50) NOTNULLDEFAULT , OtherName NVARCHAR(50) NOTNULL

DEFAULT , Info NVARCHAR(600) NOTNULLDEFAULT , Score NVARCHAR(5) NOTNULLDEFAULT0, NumberNVARCHAR

(20) NOTNULLDEFAULT0, Remark NVARCHAR(200) NOTNULLDEFAULT , createUser INTNOTNULLDEFAULT0, createTime DATETIME

DEFAULTGETDATE(), updateUser INTNOTNULLDEFAULT0, updateTime DATETIME DEFAULTGETDATE() );爬虫的第一步,分析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() defmain():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() 成果展示:

最后,小编分享一波2019最新的python全套教程最后小编为大家准备了6月份新出的python自学视频教程,共计415集,可以免费分享给大家!可加小编的学习群就能免费领取了:10840282452019Python自学教程全新升级为《Python+数据分析+机器学习》,九大阶段能力逐级提升,打造技能更全面的全栈工程师。

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

发表评论:

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