Python3爬虫新手实践及代码、经验分享

Python3静态网页爬虫新手实践及代码、经验分享

写在最前

在写爬虫之前需要先配置python环境,爬取静态网页的文字及图片只需要通过pip安装Scrapy、beautifulsoup4 。(此处略去一万字,可以自行百度python3爬虫框架)
一定要注意python代码的格式化!

开始实践

一般网站都会有反爬虫机制,所以我们在这里使用最简单的方法构建header头。

header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}

还可以用代理IP防止网站因访问速度太快封IP。对于代理IP我们可以直接百度”代理IP“进行查找。

url1 = request.Request(url,headers=header)
#建立代理IP列表,此处去百度查代理IP。此处IP只是示例!!!!
iplist = ['61.135.217.7:80','115.223.223.132:9000']
proxies = {'http':random.choice(iplist)}
proxy_support = urllib.request.ProxyHandler(proxies)
#创建opener
opener = urllib.request.build_opener(proxy_support)
#安装opener,此后调用urlopen()时都会使用安装过的opener对象
urllib.request.install_opener(opener)

之后要用到BeautifulSoup。对于BeautifulSoup可以用Python标准库,这种方法速度快简单但是容错差。此处就是利用标准库

soup = BeautifulSoup(html,'html.parser')

对于爬虫的一个关键就是通过正则表达式获取到所需的内容。此处的代码作用是爬取图片,!!!!对于不同网站正则表达式会有差异!!!!在此处是认为图片的标签是img。之后用正则表达式获取到图片的源地址并存入列表,便于一个一个爬取保存下载。如有不懂正则表达式的可以在菜鸟教程中学习或留言交流交流。

links = soup.find_all('img',src=re.compile(r'.jpg$'))

之后就是简单的遍历下载了。此处有一个坑就是需要再打开图片的源地址,对于这个页面我们的header头又变成了python的初始header,这个时候服务器认出这是爬虫,如果此网站恰巧不想被爬就会关闭连接,此时程序就会抛出403异常。此时我们将每个需要访问的网址加上header就会正常了

for link in links:

        print(link.attrs['src'])
        url_real='https:'+link.attrs["src"]
        print(url_real)
        header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}
        url_real = request.Request(url_real,headers=header)
        data = urllib.request.urlopen(url_real).read()
        with open(path+'\%s.jpg' % time.time(), 'wb') as f:
            f.write(data)
    pass

到此为止,你的爬虫就能使用了。
说了这么多是时候上代码了:

from  bs4 import BeautifulSoup  
import urllib.request
from urllib import request  
import re  
import time  
import random
import requests

print('输入网址:',end="")
url = input('')
header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}

#抛出异常
try:

    url1 = request.Request(url,headers=header)

    iplist = ['XXX.XXX.XXX.XXX:XXXX','XXX.XXX.XXX.XXX:XXXX','115.223.223.132:9000\
    ']
    proxies = {'http':random.choice(iplist)}
    proxy_support = urllib.request.ProxyHandler(proxies)
    opener = urllib.request.build_opener(proxy_support)
    urllib.request.install_opener(opener)
    html = urllib.request.urlopen(url1).read()#.decode('utf-8')  若显示乱码则将加上编码
    soup = BeautifulSoup(html,'html.parser')  
    links = soup.find_all('img',src=re.compile(r'.jpg$'))

    path = r'F:\编程语言Learning\Python\test\images' 

    for link in links:

        print(link.attrs['src'])
        url_real='https:'+link.attrs["src"]
        print(url_real)
        header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}
        url_real = request.Request(url_real,headers=header)
        data = urllib.request.urlopen(url_real).read()
        with open(path+'\%s.jpg' % time.time(), 'wb') as f:
            f.write(data)
    pass
except urllib.error.URLError as e:
    print(e.reason)  
对于Python爬虫新手,以下是一些推荐的网站: 1. 知乎:知乎上有很多关于Python爬虫分享和讨论,你可以搜索相关话题,了解其他人的经验和观点。 2. GitHub:GitHub是一个代码托管平台,你可以在上面找到各种Python爬虫的开源项目。你可以通过查看这些项目的代码和文档,学习如何使用Python进行爬虫开发。 3. CSDN:CSDN是一个技术社区网站,上面有很多关于Python爬虫的教程和案例。你可以通过搜索相关关键词,找到适合初学者的教程,了解Python爬虫的基础知识和常用技巧。 4. Python官方文档:Python官方文档是学习Python的重要资源之一。在官方文档中,你可以找到关于Python标准库和第三方库的详细文档,其中也包括与爬虫相关的库和模块的介绍和使用方法。 5. Stack Overflow:Stack Overflow是一个程序员社区问答网站,你可以在上面提问关于Python爬虫方面的问题,得到其他开发者的帮助和建议。 这些网站提供了各种不同的学习资源和交流平台,可以帮助你作为Python爬虫新手入门和进阶。你可以根据自己的需求和兴趣选择其中的一个或多个进行学习和参考。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python爱好者学习过程中必看10个常用网站](https://blog.csdn.net/m0_69951489/article/details/124680680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python最新版2023爬虫代码,快速简洁,不仅可以当教程,还可以项目中使用](https://download.csdn.net/download/u012442504/88247076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值