python爬虫学习:
https://www.cnblogs.com/vvlj/p/9580423.html
#四个步骤
1.查看crawl内容的源码格式 crawl的内容可以是 url(链接),文字,图片,视频
2.请求网页源码 (可能要设置)代理,限速,cookie
3.匹配 用正则表达式匹配
4.保存数据 文件操作
#两个基本工具(库)
1.urllib
https://www.cnblogs.com/duxie/p/10023732.html
2.requests
https://www.cnblogs.com/duxie/p/10024919.html
#这是一个成功的爬取豆瓣读书的例子:
import urllib.request
import re
url="https://book.douban.com/"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(req)
pattern = re.compile('(.*?)
.*?year">(.*?).*?
', re.S)
results = pattern.findall(response.read().decode(
'utf-8'))
for result
in results:
name, author, date =
result
author = re.sub(
"\s",
"", author)
date = re.sub(
"\s",
"", date)
print(
"【书名】:", name,
" 【作者】:", author,
" 【出版年】:", date)
#正则表达式的学习:
https://www.cnblogs.com/duxie/p/10033388.html
https://www.cnblogs.com/duxie/p/10031230.html
https://www.cnblogs.com/duxie/p/10025581.html
#正则表达式常见的函数:
https://www.cnblogs.com/longwhite/p/10397763.html
re.match()函数是从源字符串的起始位置开始匹配一个模式,其使用格式为re.match(pattern,string,flag),其中pattern代表对应的正则表达式,string代表源字符串,flag是可选参数,代表对应的标志位,可以是模式修正符等信息。
与re.match()函数最大的不同就是re.search()函数是在全文进行检索并匹配,而re.match()是在源字符串的起始位置开始匹配,下面代码可以看出它们的不同。
要想全部匹配出来,就要先使用re.compile()对正则表达式进行预编译,然后使用findall()根据正则表达式从源字符串中匹配所有的结果。
re.sub(pattern,rep,string,max),rep是指要代替的字符串,max是最大替换次数