Python爬虫环境(python爬虫系统)
4种Python爬虫(4. 手机APP,如,乐刻运动)
目录:
1. PC网页爬虫
2. H5网页爬虫
3. 微信小程序爬虫
4. 手机APP爬虫
爬取乐刻运动手机APP的课表数据。Android和iOS都可以。
要制定具体方案,还是要从抓包分析开始。
如果你在前一章《三、微信小程序爬虫》中已经搭建好了Charles+iPhone的抓包环境,可以直接启动“乐刻APP”再来抓一波。
LefitAppium.py
LefitMitmAddon.py
接下来就是见证奇迹的时刻了!
可以看到左侧的手机已经自动跑起来了!
所有流过的数据都尽在掌握!
这个方案的适应能力非常强,不怕各种反爬虫机制。
但是如果要去爬取淘宝、携程等海量数据时,肯定也是力不从心。
教你用Python写一个爬虫,免费看小说
这是一个练习作品。用python脚本爬取笔趣阁上面的免费小说。
环境:python3
类库:BeautifulSoup
数据源:
原理就是伪装正常http请求,正常访问网页。然后通过bs4重新解析html结构来提取有效数据。
包含了伪装请求头部,数据源配置(如果不考虑扩展其他数据源,可以写死)。
config.py文件
fiction.py文件
summary.py文件
catalog.py文件
article.py文件
暂没有做数据保存模块。如果需要串起来做成一个完整的项目的话,只需要把小说数据结构保存即可(节省磁盘空间)。通过小说url可以很快速的提取出小说简介、目录、每一章的正文。
如果想要做的更好,可以把目录,介绍、正文等部分缓存起来,当然得有足够的空间。
Python中的爬虫框架有哪些呢?
实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实现你想要的功能。更重要的,Python也是数据挖掘和分析的好能手。那么,Python爬虫一般用什么框架比较好?
一般来讲,只有在遇到比较大型的需求时,才会使用Python爬虫框架。这样的做的主要目的,是为了方便管理以及扩展。本文我将向大家推荐十个Python爬虫框架。
1、Scrapy:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。它是很强大的爬虫框架,可以满足简单的页面爬取,比如可以明确获知url pattern的情况。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。它的特性有:HTML, XML源数据 选择及提取 的内置支持;提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。
2、Crawley:高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
3、Portia:是一个开源可视化爬虫工具,可让使用者在不需要任何编程知识的情况下爬取网站!简单地注释自己感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。简单来讲,它是基于scrapy内核;可视化爬取内容,不需要任何开发专业知识;动态匹配相同模板的内容。
4、newspaper:可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。作者从requests库的简洁与强大得到灵感,使用Python开发的可用于提取文章内容的程序。支持10多种语言并且所有的都是unicode编码。
5、Python-goose:Java写的文章提取工具。Python-goose框架可提取的信息包括:文章主体内容、文章主要图片、文章中嵌入的任何Youtube/Vimeo视频、元描述、元标签。
6、Beautiful Soup:名气大,整合了一些常用爬虫需求。它是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间。Beautiful Soup的缺点是不能加载JS。
7、mechanize:它的优点是可以加载JS。当然它也有缺点,比如文档严重缺失。不过通过官方的example以及人肉尝试的方法,还是勉强能用的。
8、selenium:这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。Selenium是自动化测试工具,它支持各种浏览器,包括 Chrome,Safari,Firefox等主流界面式浏览器,如果在这些浏览器里面安装一个 Selenium 的插件,可以方便地实现Web界面的测试. Selenium支持浏览器驱动。Selenium支持多种语言开发,比如 Java,C,Ruby等等,PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与Python的对接,Python进行后期的处理。
9、cola:是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。项目整体设计有点糟,模块间耦合度较高。
10、PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。Python脚本控制,可以用任何你喜欢的html解析包。
python爬虫什么教程最好
可以看这个教程:网页链接
此教程 通过三个爬虫案例来使学员认识Scrapy框架、了解Scrapy的架构、熟悉Scrapy各模块。
此教程的大致内容:
1、Scrapy的简介。
主要知识点:Scrapy的架构和运作流程。
2、搭建开发环境:
主要知识点:Windows及Linux环境下Scrapy的安装。
3、Scrapy Shell以及Scrapy Selectors的使用。
4、使用Scrapy完成网站信息的爬取。
主要知识点:创建Scrapy项目(scrapy startproject)、定义提取的结构化数据(Item)、编写爬取网站的 Spider 并提取出结构化数据(Item)、编写 Item Pipelines 来存储提取到的Item(即结构化数据)。
python爬虫数据存到非本地mysql
pymysql 基本使用 八个步骤以及案例分析
一.导入pymysql模块
导入pymysql之前需要先安装pymysql模块
方法一:直接在pycharm编译器里面输入 pip install pymysql
方法二:win+r -- 输入cmd --在里面输入pip install pymysql
ps:在cmd中输入pip list后回车 可以找到安装的pymysql就表示安装成功了
1
2
3
4
5
6
1
2
3
4
5
6
在pycharm编译器中导入
import pymysql
1
2
1
2
二.获取到database的链接对象
coon = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql_test')
1
1
user:是你的数据库用户名
password:数据库密码
database:你已经创建好的数据库
1
2
3
1
2
3
三.创建数据表的方法
cursor.execute(
'''create table if not exists pets(id int primary key auto_increment,
src varchar(50),
skill varchar(100)''')
1
2
3
4
1
2
3
4
四.获取执行sql语句的光标对象
cousor = coon.cousor()
1
1
五.定义要执行的sql语句
1.sql的增加数据的方法
sql = '''insert into test_mysql(id,src,skill) values(%d,%s,%s)'''
1
1
ps: test_mysql 是你连接到的数据库中的一张表
id,src,skill 这个是你创建表时所定义的字段关键字
%d,%s,%s 这个要根据你创建的字段关键字的类型而定,记住要一一对应
1
2
3
1
2
3
2.sql的删除数据的方法
sql_1 = '''delete from test_mysql where src=%s;'''
1
1
3.sql的修改数据方法
sql_2 = '''update test_mysql set src=%s where skill=%s;'
1
1
4.sql的查询方法
sql_3 = '''select * from test_mysql where skill = %s'''
1
1
六.通过光标对象执行sql语句
1.执行增加数据的sql语句
cousor.execute(sql, [2, '', '000000'])
运行后在mysql的可视化后台就可以直观的添加的数据
1
2
1
2
2.执行删除数据sql语句
new = ''
cousor.execute(sql_1, [new])
PS:这里就是根据sql语句where后面的条件进行删除对应的数据
要记住传入的数据要与sql的where后面条件匹配
1
2
3
4
1
2
3
4
3.执行修改数据的sql语句
url = ''
pwd = '666666'
cousor.execute(sql_2,[pwd,url])
1
2
3
1
2
3
4.执行查询数据的sql语句
result1 = cousor.fetchone()
fetchone() 查询=整个表中的第一条数据,
如果再次使用就会查找到第二条数据,
还可以在括号内输入id值查询到相应的数据
result2 = cousor.fetchmany()
fetchmany()查询到表里的多条数据,
在括号里输入几就会查找到表的前几条数据
result2 = cousor.fetchall()
fetchall()查询到sql查询匹配到的所有数据
print(result)
用print输出语句就能直接打印输出所查询到的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
**总结: 在执行sql语句要传入参数时,这个参数要以列表或者元组的类型传入**
1
1
七.关闭光标对象
cousor.close()
1
1
八.关闭数据库的链接对象
coon.cousor()
1
1
九.洛克王国宠物数据抓取案例
import requests
import pymysql
from lxml import etree
from time import sleep
# 数据库链接
conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql')
cursor = conn.cursor()
# 执行一条创建表的操作
cursor.execute(
'''create table if not exists pets(id int primary key auto_increment,name varchar(50),src varchar(100),industry text)''')
url = ''
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = 'gbk'
html = response.text
# print(html)
# 宠物名称
# 宠物图片(图片在 lz_src)
# 宠物技能(跳转详细页)
tree = etree.HTML(html)
li_list = tree.xpath('//ul[@id="cwdz_list"]/li') # 所有的宠物
for li in li_list:
name = li.xpath('./@name')[0] # 每一个宠物的名称
src = 'http:' + li.xpath('./a/img/@lz_src')[0] # 图片链接
link = '' + li.xpath('./a/@href')[0] # 宠物的详细链接
industry = [] # 数组里面存放每一个对象,每一个对象就是一个技能
# 对详细链接发起请求,获取技能
try:
detail_resp = requests.get(url=link, headers=headers)
sleep(0.5)
detail_resp.encoding = 'gbk'
detail_tree = etree.HTML(detail_resp.text)
# 技能
skills = detail_tree.xpath('/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/table[4]/tbody/tr')
del skills[0]
del skills[0]
for skill in skills:
item = {}
item['name'] = skill.xpath('./td[1]/text()')[0] # 技能
item['grade'] = skill.xpath('./td[2]/text()')[0] # 等级
item['property'] = skill.xpath('./td[3]/text()')[0] # 属性
item['type'] = skill.xpath('./td[4]/text()')[0] # 类型
item['target'] = skill.xpath('./td[5]/text()')[0] # 目标
item['power'] = skill.xpath('./td[6]/text()')[0] # 威力
item['pp'] = skill.xpath('./td[7]/text()')[0] # pp
item['result'] = skill.xpath('./td[8]/text()')[0] # 效果
industry.append(item)
# print(industry)
# 数据保存 (mysql)
sql = '''insert into pets(name,src,industry) values (%s,%s,%s);'''
cursor.execute(sql, [name, src, str(industry)])
conn.commit()
print(f'{name}--保存成功!')
except Exception as e:
pass
cursor.close()
conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
十.总结
本章内容主要是给大家讲解一下在爬虫过程中如何将数据保存mysql数据库中去,
最后面这个案例就是一个示范,希望这篇文章能给大家带来帮助,都看到这里了给
个三连支持一下吧!!!
1
2
3
1
2
3