2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 网络爬虫与信息提取--正则表达式---淘宝商品比价定向爬虫

网络爬虫与信息提取--正则表达式---淘宝商品比价定向爬虫

时间:2018-12-26 12:44:31

相关推荐

网络爬虫与信息提取--正则表达式---淘宝商品比价定向爬虫

淘宝商品比价定向爬虫

本实例爬取时间.9.11

由于淘宝代码的不断完善更新,本爬取代码已经不能爬取出商品信息内容

原因:结果为空;打印html看到,需要登录淘宝

在网上找解决方法,可以复制cookies

但是发现 没找到cookies

虽然爬取最终失败了,但是逻辑还是很受用哒~

【/p/4359137776c0 可以看这篇讲解详细

从众多的文本从提取我们想要的信息,用正则表达式是非常合适的工具. 由于这段商品信息包含在html页面中,但是一种脚本语言体现.并不是完整的html页面表示,因此就未使用beautifulSoup库.换句话而言,当不使用beautifulSoup库去解析html代码,如果只通过搜索获得信息,那么这种方式就是最简单的.这里面只采用正则表达式的方式来实现对商品价格和商品名称的获取.具体如下:

作者:durian221783310

链接:/p/4359137776c0

来源:简书】

与爬取最好大学网不同 本例使用的是正则表达式,没有使用beautifulsoup库

目标:获取搜索页面的信息 提取其中的商品名称和价格

理解:搜索接口 翻页处理

技术路线: requests-bs4-re

爬虫可行性:robots协议

程序的结构设计:

1.提交商品搜索请求,循环获取搜索页面

2.对于每个页面,提取名称和价格

3.信息输出到屏幕上

import requests

import re

def getHTMLtext(url):

try:

r=requests.get(url,timeout=30)

r.raise_for_status()

r.encoding=r.apparent_encoding

return r.text

except:

return “”

def parsepage(ilt,html):

try:

plt=re.findall(r’“view_price”:"[\d.]"’,html)

tlt=re.findall(r’“raw_title”:".?"’,html)

for i in range (len(plt)):

price=eval(plt[i].split("😊[1])

title=eval(tlt[i].split("😊[1])

ilt.append([price,title])

except:

print("")

def printgoodslist(ilt):

tplt = “{:4}\t{:8}\t{:16}”

print(tplt.format(“序号”,“价格”,“商品名称”))

count=0

for g in ilt:

count=count+1

print(tplt.format(count,g[0],g[1]))

def main():

goods=“书包”

start_url="/search?q="+goodsinfolist=[]depth=2for i in range(depth):try:url=start_url+"&s="+str(44*i)html=getHTMLtext(url)parsegage(infolist,html)except:continueprintgoodslist(infolist)

main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。