本文已参与「新人创作礼」活动,一起开启掘金创作之路。
import sys
import time
import os
import requests
import re # 正则表达式,进行文字匹配
from bs4 import BeautifulSoup # (网页解析,获取数据)
import urllib.request, urllib.error # 制定URL,获取网页数据,urllib.request urllib.error
import sqlite3
url = 'https://www.3gbizhi.com/tag/dongman/3.html'#自己增加format会吧,线性的,记得加sleep
headers = {
'user-agent': '自己的user-agent'}
response = requests.get(url=url, headers=headers)
html = response.text
print(html)
# html.encode('utf-8')
urls = re.findall('<img lazysrc="(.*?)" lazysrc2x=".*?" height="348px" alt=".*?" title=".*?" />', html)
filename = 'D:\二次元图片爬取\'
print(urls)
if not os.path.exists(filename):
os.mkdir(filename)
for url in urls:
name = url.split('/')[-1]
response = requests.get(url, headers=headers)
# with open(filename+'小猫咪'+'.png',mode='wb') as f:
with open(filename + name, mode='wb') as f:
f.write(response.content)
同步爬取,不过不是高清的图片,只有点击进去才能得到高清图,这个时候我想用用selenium模拟浏览器操作,用click点击,然后抓取xpath,不过在观察后发现照片网址有规律,所以高清图片的获取就有了简单方法
高清图片获取代码:
import sys
import time
import os
import requests
import re # 正则表达式,进行文字匹配
from bs4 import BeautifulSoup # (网页解析,获取数据)
import urllib.request, urllib.error # 制定URL,获取网页数据,urllib.request urllib.error
import sqlite3
# url = 'https://www.3gbizhi.com/wallDM/4383.html'#自己增加format会吧,线性的,记得加sleep
k = int(input("请输入爬取页面数:"))
for i in range(0, k+1):
url = 'https://www.3gbizhi.com/wallDM/{}.html'.format(4808-i)
headers = {
'user-agent': '自己的ua'}
response = requests.get(url=url, headers=headers)
html = response.text
# html.encode('utf-8')
# urls = re.findall('<img lazysrc="(.*?)" lazysrc2x=".*?" height="348px" alt=".*?" title=".*?" />', html)
urls = re.findall('<img src="(.*?)" alt=".*?"></a>', html)
filename = 'D:\二次元图片高清\'
print(urls)
time.sleep(0.1) #留点缓冲时间
if not os.path.exists(filename):
os.mkdir(filename)
if len(urls) != 0:
for url in urls:
name = url.split('/')[-1]
response = requests.get(url, headers=headers)
# with open(filename+'小猫咪'+'.png',mode='wb') as f:
with open(filename + name, mode='wb') as f:
f.write(response.content)
if i == k:
print("爬取结束了")
网络爬虫,又称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动请求万维网网站并提取网络数据的程序或脚本。
如果说网络像一张网,那么爬虫就是网上的一只小虫子,在网上爬行的过程中遇到了数据,就把它抓取下来。
这里的数据是指互联网上公开的并且可以访问到的网页信息,而不是网站的后台信息(没有权限访问),更不是用户注册的信息(非公开的)
介绍部分
Basic Auth
这是一种古老的、不安全的用户验证方式,一般会有用户授权的限制,会在headers的Autheration字段里要求加入用户名密码(明文),如果验证失败则请求就会失败,现在这种认证方式正在被淘汰。
Referer
链接的来源,通常在访问链接时,都要带上Referer字段,服务器会进行来源验证,后台通常会用此字段作为防盗链的依据。
User-Agent
后台通常会通过此字段判断用户设备类型、系统以及浏览器的型号版本。有些编程语言包里网络请求会自定义User-Agent,可以被辨别出来,爬虫中可以设置为浏览器的ua.
Cookie
一般在用户登录或者某些操作后,服务端会在返回包中包含Cookie信息要求浏览器设置Cookie,没有Cookie会很容易被辨别出来是伪造请求; 也有本地通过JS,根据服务端返回的某个信息进行处理生成的加密信息,设置在Cookie里面
效果如下: