Python爬虫学习记录(一)

Python爬虫学习记录(一)

      • 基本步骤:
          • requests的使用
          • 页面分析用正则或者lxml
            • 正则的简单用法:
            • lxml的用法:

最近学了几天Python爬虫,按照教程也爬了一些网站,在这里总结一下。

基本步骤:

确定链接,用requests发请求,得到响应页面,页面分析,保存结果。

requests的使用
import  requests
from fake_useragent import UserAgent
headers={}
us=UserAgent()
useragent = us.random
headers['User-Agent'] = useragent
res=requests.get(url="https://www.baidu.com",headers=headers)
	if res.status_code==200:
    	return res.content.decode(code)

fake_useragent的功能是随机生成headers里的User-Agent,算是一个反爬的策略吧

页面分析用正则或者lxml
正则的简单用法:

把网页源码有数据标志性的那一段都复制过来,找到数据用(.*?)代替,re.compile之后.findall就完事。re.compile在正则表达式之后记得加上re.S。.findal返回一个列表,列表的每个记录是一个元组,每个括号对应一个元组元素。

import re
html='''
class="name">霸王别姬

主演:张国荣,张丰毅,巩俐

上映时间:1993-07-26

'''
pattren=re.compile("""
.*?title="(.*?)".*?class="star">(.*?)

.*?class="releasetime">上映时间:(.*?)

""",re.S) r_list=pattren.findall(html)
lxml的用法:

parse_txt是lmxl表达式,xpath返回一个结果列表

from lxml import html

etree = html.etree
parse_html = etree.HTML(html_txt)
text_list=parse_html.xpath(parse_txt)

lmxl表达式的几个简单例子

'//div[@class="g-19"]//a/@title'

找到div块中类名为g-19的块下链接的所有标题,@title换成@href就是取得链接地址,a/text()可以取得文字

'//div[contains(@class,"list_item")]//a/@title'

contains可以查找@class中包含"xxx"的所有元素,也可以用and或or同时查找多个条件。

静态网页差不多靠这个就爬下来了,动态网页明天再说。

你可能感兴趣的:(Python爬虫学习记录(一))