当前位置:   article > 正文

python爬虫思路——静态网站_爬虫静态网站

爬虫静态网站

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

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

步骤

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

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

  1. import requests
  2. url = 'https://fanyi.youdao.com/' #网页
  3. result = requests.get(url) #爬取
  4. print(result.text) #打印爬取结果的文本

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

a4336096a5134e5aaf3dc80160d8d1f9.png

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

  1. import requests
  2. headers = {
  3. 'user-agent' : '这里是自己浏览器的user-agent',
  4. }
  5. url = "https://fanyi.youdao.com/"
  6. result = requests.get(url,headers=headers)
  7. print(result.text)

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

  1. import requests
  2. headers = {
  3. 'user-agent' : '这里是自己浏览器的user-agent',
  4. 'cookie' : '自己的cookie'
  5. }
  6. url = "https://fanyi.youdao.com/"
  7. result = requests.get(url,headers=headers)
  8. print(result.text)

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

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

2ff9a7f2609a40ed9dd9f110b8eab3ed.png

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

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

  1. import requests
  2. #写入HTML文件
  3. url = "https://fanyi.youdao.com/"
  4. result = requests.get(url)
  5. content = str(result.content,'utf-8')
  6. with open('youdao.html','w',encoding='utf-8') as file:
  7. file.write(content)
  1. from lxml import etree
  2. 读取文件练习
  3. with open('youdao.html','r',encoding='utf-8') as file:
  4. html = file.read()
  5. dom = etree.HTML(html)
  6. txt = dom.xpath('//a[@id="transMan"]/text()')
  7. print(txt)

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

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

5de9cf6892db47e9acad6e3d4d6433b2.png

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

  1. import requests
  2. import lxml.etree as etree
  3. url = "https://fanyi.youdao.com/"
  4. result = requests.get(url)
  5. result = etree.HTML(result.text)
  6. text = result.xpath('//*[@id="transMan"]/text()')
  7. print(text)

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

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

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

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

800c312eca9343558e7e305885b884e3.png

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/1006803
推荐阅读
相关标签
  

闽ICP备14008679号