爬虫基础
工具
anaconda + juypter
是的,就是这么简单粗暴,anaconda 去清华大学镜像站下载,速度max
抓取页面
目前用的是python自带的BeautifulSoup库,用来做入门很方便。scrapy是一个爬虫框架,后面再研究。
for example
from bs4 import BeautifulSoup
import requests
url = 'www.sohu.com'
headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}
html = requests.get(url, headers=headers)
soup = BeautifulSoup(html.content,'lxml')
soup 就是我们爬取的初始页面,里面包含整个页面的所有元素
定位元素
拿到整个页面后就需要定位到需要的元素,毕竟正常情况下只是需要其中的一部分内容。基本函数是:
find()返回第一个符合要求的标签
findAll()返回一个由所有符合要求的标签组成的列表。除此之外基本相同
1、通过标签
2、通过标签属性
3、通过标签+属性
还有更高级的通过正则匹配,目前还没用上
这几种定位方法是可以灵活组合的
for example
# 基础
soup_text = soup.find('div')
soup_text = soup.find(name = "actor_list")
# 组合
soup_text = soup.find('div', id = 'row grid').
soup_text = soup.find('div', class_='row grid').find_all('a')
获取内容
内容无非就那几种:文字、图片、链接。
for example
name = soup.find('a', class_='icon-only link icon-only back').find('h3').text
soup_text = soup.find('div', class_='row grid').find_all('a')
# print(soup_text)
for links in soup_text:
actor_url = links.get('href')
actor_url_pool.append(actor_url)
imgs = soup.find('p', id='imgList').find_all('img')
to be continue