1.半自动爬取网页信息
1.右键网页查看网页源代码,将源码复制到一个文件里
2.导入正则表达式包re,提取写网页有用的信息,用正则去匹配,放在一个集合里,把所有的集合放到一个列表里,直接放源代码。
import os
import csv
import re
with open("a.txt",'r',encoding="utf-8") as f:
source = f.read()
result_list = []
every_reply = re.findall('article-item-box csdn-tracking-statistics"(.*?)read-num">评论数',source,re.S)
for i in every_reply:
##print(i)
result = {}
result['标题'] = re.findall('原创</span>(.*?)</a>',i,re.S)
result['内容'] = re.findall('class="content">.*target="_blank">(.*?)</a>',i,re.S)
result['阅读数'] = re.findall('阅读数 <span class="num">(.*?)</span>',i,re.S)
result_list.append(result)
with open('a.csv','w',encoding='utf-8') as f:
writer = csv.DictWriter(f,fieldnames=['标题','内容','阅读数'])
writer.writeheader()
writer.writerows(result_list)
这是爬取某csdn博主的某页文章的标题,内容,阅读数等信息
2.网页爬取图片
1.导入requests包
2.requests.get(url).text或requests.get(url).content.decode就可以输出整个页面的源码了
当print这个页面源码时出现403forbidden错误,这是服务器禁止访问,应该是某些网站的反爬机制,只需要在那网页控制台下输入alert(navigator.userAgent)查看他的User-Agent就可以了。在代码里加上headers就可以了,具体代码如下:
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'}
html = requests.get('https://www.mzitu.com/all',headers=headers)
print(html.text)
3.以https://mm.enterdesk.com/dongmanmeinv网址为例,爬取代码如下,详细就不解释了,我自己还是看得懂的,一般也都看得懂,Python代码就是这么简洁有力!
import requests
from bs4 import BeautifulSoup
import lxml
import os
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)
all_url = 'https://mm.enterdesk.com/dongmanmeinv' ##开始的URL地址
start_html = requests.get(all_url, headers=headers) ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释
##print(start_html.text) ##打印出start_html (请注意,concent是二进制的数据,一般用于下载图片、视频、音频 print(li) ##同上音频、等多媒体内容是才使用concent, 对于打印网页内容请使用text)
Soup = BeautifulSoup(start_html.text, 'lxml') ##使用BeautifulSoup来解析我们获取到的网页(‘lxml’是指定的解析器 具体请参考官方文档哦)
max_page = Soup.find('div', class_='listpages').find_all('a')[-1]['href'][-6]##找到该div最后一个a标签的href属性的倒数第六个值,也就是最大页数
##print(max_page)
os.makedirs("D:\mzipic")##创建该文件夹
##保存图片
def saveImg(img_src):
name = img_src[-36:-4]
img = requests.get(img_src, headers=headers)
f = open(name + '.jpg', 'ab')
f.write(img.content)
f.close()
for page in range(1, int(max_page) + 1): ##左闭右开原则
page_url = all_url + '/' + str(page)+'.html'
os.chdir("D:\mzipic") ##切换到目录
##print(page_url) ##这个page_url就是每张图片的页面地址啦!但还不是实际地址!
img_html = requests.get(page_url, headers=headers)
img_Soup = BeautifulSoup(img_html.text, 'lxml')
img_url = img_Soup.find('div', class_='egeli_pic_m center').find_all('img')
for img in img_url:
img_src = img['src']
saveImg(img_src)
print('下载成功:'+img_src)
爬取到的图片如下:
今天就到这里,明天去爬取美女网站的图片试试!