python爬虫思路——静态网站

废话不多说,直接上步骤,还不知道什么是爬虫的小伙伴请观看别的博主的文章,我只是需要用才学一点,做个笔记,我了解的也不够清楚,就不解释了。

在了解了静态网站爬取的思路后就可以尝试通过框架爬取:python爬虫笔记——Scrapy框架(浅学)

步骤

注意:不要频繁请求某个网站或者说是服务器,这样会导致别人的服务器会崩或者别的问题,还有可见即可得,不可见即不可得,就是VIP、付费、或者涉及隐私等等的东西别爬。

1. 我们就用最基础的request库来进行演示,首先导入request库,给一个正确的网页给url,然后通过request进行请求(爬取)。我们以有道在线翻译为例。 

import requests

url = 'https://fanyi.youdao.com/'  #网页
result = requests.get(url)   #爬取

print(result.text)  #打印爬取结果的文本

如果看到这样的结果就说明请求成功,也就是爬取成功。

a4336096a5134e5aaf3dc80160d8d1f9.png

 2. 因为有些网站有反爬机制,假设我们的爬取不成功,那如果不成功怎么办呢,那么我们就需要让爬虫模拟成浏览器,不然别人知道你是爬虫。所以我们要加个user-agent,怎么找到user-agent和cookie等会再说。

import requests

headers = {
    'user-agent' : '这里是自己浏览器的user-agent',
           }

url = "https://fanyi.youdao.com/"
result = requests.get(url,headers=headers)

print(result.text)

         那如果还不成功怎么办呢,那就再加一个cookie

import requests

headers = {
    'user-agent' : '这里是自己浏览器的user-agent',
    'cookie' : '自己的cookie'
           }

url = "https://fanyi.youdao.com/"
result = requests.get(url,headers=headers)

print(result.text)   

         那要是还不成功怎么办呢,如果还不成功找别人吧,我也不知道该怎么办了。总的来说就是一个不断试探它底线的过程。

        接下来讲怎么拿到user-agent和cookie,1. 在要爬取的网页按F12或Fn+F12(一般是笔记本电脑)看到右侧的开发者工具——>2. 找到网络(Network)这一块,随便选择可以文件左键点击——>3.再点击标头,看看有没有我们要找的东西,没有就换一个文件继续找。 

2ff9a7f2609a40ed9dd9f110b8eab3ed.png

 3. 这里我建议将爬下来的数据写入文件,通过读取文件查找效果一样的,减少练习时给服务器添加的负担

这是其实是文件练习的全部代码了,有些不理解的地方往后看

import requests

#写入HTML文件
url = "https://fanyi.youdao.com/"
result = requests.get(url)
content = str(result.content,'utf-8')
with open('youdao.html','w',encoding='utf-8') as file:
    file.write(content)
from lxml import etree

读取文件练习
with open('youdao.html','r',encoding='utf-8') as file:
    html = file.read()

dom = etree.HTML(html)

txt = dom.xpath('//a[@id="transMan"]/text()')
print(txt)

4. 那我请求成功后接下来就要定位我们需要爬取的东西的位置,例如我们就爬人工翻译四个字

           1.首先需要在网页的开发者工具部分从刚刚的网络转到元素——>2.点击左边的那个锁定图标——>3.点击我们要爬取的人工翻译四个字——>4. 找到需要爬取的东西,鼠标右键选择复制,再选择复制xpath——>5.回到代码中写下函数并粘贴路径在xpath里。

5de9cf6892db47e9acad6e3d4d6433b2.png

 这是不写入HTML的情况,同样需要借助etree函数

import requests
import lxml.etree as etree

url = "https://fanyi.youdao.com/"
result = requests.get(url)

result = etree.HTML(result.text)

text = result.xpath('//*[@id="transMan"]/text()')

print(text)

这里需要导入新的函数库etree,目的是为了将爬下来的数据整理成格式化的HTML形式,方便用xpath进行查找,xpath里的路径建议自己写。

//a[@id="transMan"]/text()  还是刚才的四个字

格式大概是://(当前位置下全查找)a(所在位置的标签或上级标签)[@id="transMan"](标签的属性)/(标签下按格式查找)text()(查找文本)

结果如下,返回的是一个列表,如果通过提供的路径能找到多个值会以并返回列表,列表里的元素就不只是一个了。

800c312eca9343558e7e305885b884e3.png

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值