静态爬虫研究

1.HTML代码

所谓的html代码,浏览博客的你右手一定在鼠标上,好的,跟着我左手右手一个慢动作,点击右键,找到“查看网页源代码”,不同浏览器可能这个描述不太一样,博主是Chrome,不过都差不太多,是不是有看到类似下面这个图的一堆不知道是什么鬼的代码?

html代码其实就是用许多个"<Y yy='aaa'>xxxx</Y>"是的结构将想要输出在页面上的内容包含起来的一种语言。我们肉眼所看到的东西大部分都来自于html代码,html代码的作用简单来说就是程序员用一堆html代码,将需要展示的信息放在指定的位置上的一种东西,有了html代码,才有了你眼前页面上的很多元素;当然,还有其他方式来将元素展示在页面上,如css、js等渲染方式。

知道我们所需要的信息位于html中,那么只需要找到我们需要的具体内容在哪里,然后下载下来,就大功告成了,逻辑就是这么个逻辑,所以静态爬虫的关键问题是要准确的解析html代码,一般使用BeautifulSoup这个库或者正则表达式

import requests
from lxml import html
url='https://movie.douban.com/' #需要爬数据的网址
page=requests.Session().get(url) 
tree=html.fromstring(page.text) 
result=tree.xpath('//td[@class="title"]//a/text()') #获取需要的数据

‘//td[@class=”title”]//a/text()’

  • //td :这个相当于指定是大目录;
  • [@class=”title”]:这个相当于指定的小目录;
  • //a :这个相当于最小的目录;
  • /text():这个是提取其中的数据。

2.如何从HTML代码中找到我要的内容?

html代码中都是"<Y yy='aaa'>xxxx</Y>"结构,一对”<>”我们称之为标签,这对标签中通常会有一些内容,可能是一个数字,一段字符串,一个网页链接,或者一个图片链接等等,总之,就是我们在网页上看到的内容。”Y”称之为标签名,”yy”为其属性名,”aaa”是其属性值,”xxxx”是这个标签的内容,也就是对应于页面上的信息。一般情况下我们要获取的就是”xxxx”,有时我们可能也需要获取标签的属性值”aaa”。

 

python爬虫用到的一些辅助包

import requests
import csv
import random
import time
import socket
import http.client
# import urllib.request
from bs4 import BeautifulSoup

requests:用来抓取网页的html源代码
csv:将数据写入到csv文件中
random:取随机数
time:时间相关操作
socket和http.client 在这里只用于异常处理
BeautifulSoup:用来代替正则式取源码中相应标签中的内容
urllib.request:另一种抓取网页的html源代码的方法,但是没requests方便(我一开始用的是这一种)

下方代码一开始有一个add_header的过程,为的是将代码伪装成浏览器。很多网站是反对爬虫程序对其信息进行爬取的,所以会禁止一些程序访问他们的网站,通过add_header将你的爬虫程序伪装成了浏览器,故在网站看来,访问它的就不是一个程序,而是一个浏览器,或者说是一个人类用户了。

# 使用add_header设置请求头,将代码伪装成浏览器
req0.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36")

 

 

子函数:将抓取出的数据写入其他文件

def write_data(data, name):
    file_name = name
    with open(file_name, 'a', errors='ignore', newline='') as f:
            f_csv = csv.writer(f)
            f_csv.writerows(data)

其中,data是抓取获得的数据,name是要将其存入的文件名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值