网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

        Python爬虫方法有urllib、urllib2方法和requests方法,urllib不好用,我就用requests方法了。

        Python 内置了 requests 模块,该模块主要用来发 送 HTTP 请求,requests 模块比 urllib模块更简洁。

requests使用实例

# 导入 requests 包
import requests

# 发送请求
x = requests.get('https://www.baidu.com/')

# 返回网页内容
print(x.text)

爬虫实现:

这里我就拿某瓣做例子,先拿到豆某的url和header信息

图片上传不成功,无语,header信息可以在网页按F12,点击网络,随便选择一个请求包就可以找到。

代码示例:

#导入requests模块和re模块(re为正则表达式模块)
import requests
import re

url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start=40&type=T'

#headers主要是针对反爬机制
headers = {
        'Host': 'book.douban.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate',
    }

#构建完整请求
r = requests.get(url=url, headers=headers)

data = r.text

#设置正则匹配
title = re.findall(r'title="(.*?)"', data)

#输出爬到的内容
print (title)

结果:

可以看到爬到了数据,但这只是一页的数据

['圣母', '偶像失格', '活着', '生死疲劳', '鹿川有许多粪', '秋园', '生吞', '缺席的城市', '五号屠场', '人生海海', '失明症漫记', '起初·纪年', '夜晚的潜水艇', '我本芬芳', '遥远的救世主', '献给阿尔吉侬的花束', '克拉拉与太阳', '绝叫', '文城', '美丽的世界,你在哪里', '去其他标签']

想要爬取多页,先看看网页跳转参数有哪些变化,根据变化写一个for循环就行

图片上传不成功,很烦,所以只能打字了,根据点击下一页发现某瓣url参数变化为20、40、60这样的整数,也就是一页有20本书。

修改代码:

将url中改变的参数删掉,加入到后面的for循环中。

#导入requests模块和re模块(re为正则表达式模块)
import requests
import re

# url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start=40&type=T'
url = 'https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4?start='

def shu(url):
    #headers主要是针对反爬机制
    headers = {
        'Host': 'book.douban.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Accept-Encoding': 'gzip, deflate',
    }

    #构建完整请求
    r = requests.get(url=url, headers=headers)

    data = r.text

    #设置正则匹配
    title = re.findall(r'title="(.*?)"', data)

    #输出爬到的内容
    print (title)

#根据url参数变化设置十页
ra = [0,20,40,60,80,100,120,140,160,180]

#for循环
for i in range(0,9):
    urla = url + str(ra[i]) + '&type=T'
    shu(urla)

ok,爬虫大概就是这样了,后面我会继续更新爬取数据存储进数据库中,希望点赞关注