爬虫python犯法吗_python爬虫_爬虫python教程

但不管怎样,爬虫技术是无罪的,仍然值得我们开发者学习和了解。 在学习之前,我们还是需要先了解一下相关概念。

什么是爬虫

网络爬虫:也称为网络蜘蛛或网络机器人,是一种按照一定规则自动抓取万维网上信息的程序或脚本

大数据时代,要进行数据分析,首先要有数据源。 但数据源从哪里来呢? 你必须花钱才能购买它们。 如果你没有预算,你只能从其他网站抓取它们。

细分来看,行业分为两类:爬虫和反爬虫。

反爬虫:顾名思义,就是阻止你爬行我的网站或者APP。

爬虫工程师和反爬虫工程师是一对相亲相爱的朋友,经常因为对方要加班写代码而失业。 例如,我们看一下下面的图片:

爬虫python犯法吗_python爬虫_爬虫python教程

爬虫的基本原理

爬虫python教程_python爬虫_爬虫python犯法吗

如上图所示,爬虫第一步是请求要爬取的网页,获取相应的返回结果,然后使用一些方法解析响应内容,提取出想要的内容资源。 最后,保存提取的资源。

其实上手很容易,但是我们要坚持学习。 每天坚持下去是很困难的。 相信很多人学习一周后就放弃了。 为什么? 事实上,如果没有好的学习材料供你学习,你就很难坚持下去。 这是小编收集的入门学习资料。 关注、转发、私信小编“01”即可免费领取!希望对您有帮助

爬虫python犯法吗_爬虫python教程_python爬虫

爬虫工具及语言选择 1.爬虫工具

相信大家都知道,工欲善其事,必先利其器。 想要提高效率,一些常用的工具是必不可少的。 下面是我个人推荐的几个工具:,,,Xpath-

2. 爬虫语言

目前主流的开发语言如Java、Node.js、C#等都可以实现爬虫。

因此,在语言选择的时候,可以选择自己最精通的语言来编写爬虫脚本。

目前最常用的是爬虫,因为语法简单,易于修改,而且里面有很多爬虫相关的库,可以立即使用。 互联网上也有很多信息。

爬虫库的使用1.基础知识

首先,要使用语言制作爬虫,需要学习一些基础知识,以及HTML、CSS、JS、Ajax等相关知识。 这里列出了一些与爬虫相关的库和框架:

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
......
复制代码

由于时间有限,本文仅介绍该库的爬虫技术,例如自动化测试,以及其他库和框架的信息。 有兴趣的朋友可以自行学习。

2. 基础知识

2.1. 是一个用于测试网站的自动化测试工具。 支持各种浏览器,包括 、 、 、 等主流界面浏览器,也支持无界面浏览器。

2.2. 安装方法

pip install Selenium
复制代码

2.3. 定位元素的 8 种方法

爬虫python犯法吗_爬虫python教程_python爬虫

爬虫实例演示

本案例的需求是抓取豆瓣电影信息。

url:https://movie.douban.com/top250
复制代码

爬虫python犯法吗_python爬虫_爬虫python教程

使用开发工具和数据库。

数据库表脚本:

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。 经过分析,豆瓣电影页面的URL有一定的规律:

每页显示25条电影信息。 URL规则如下,依此类推。

爬虫python教程_爬虫python犯法吗_python爬虫

接下来分析网页源码:

python爬虫_爬虫python犯法吗_爬虫python教程

最后编写爬虫脚本:

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犯法吗

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注