Python爬虫学习笔记1

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)

爬取到的图片如下:

今天就到这里,明天去爬取美女网站的图片试试!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值