嵩天老师爬虫后六单元小结

简单的记录

Posted by Pacras on March 11, 2019

第七单元 正则表达式

        正则表达式在解析 html 中有重要作用,通过字符匹配可以获取需要的信息。由于正则表达式的教程很多,不在此赘言。

第八单元 淘宝界面爬取

        本单元我们要做的是在淘宝界面输入搜索内容然后爬取。整个分为三步:

1. 提交商品搜索请求循环获取界面 _getHTMLText(url)_
2. 对于每个界面提取商品的名称和价格 _parsepage(ilt, html)_
3. 输出价格信息 _printGoodList(ilt)_

        我们用到的技术路线是 requests + 正则表达式

        对于第一步首先要观察在淘宝输入搜索内容后返回的链接,不难发现搜索后的链接为 https://s.taobao.com/search?q=后跟搜索的内容,我们用变量 start_url 存储;且第二页的链接为 start_url + ‘$s=44’,观察可知每页显示44个商品(实际上第一页是48个),故可推知每一页的 url,调用 getHTMLText(url) 获取页面源码。

        之后,我们调用 parsepage(ilt, html) ,利用正则表达式直接提取商品名称和价格到列表中,然后在 printGoodList(ilt)中打印:

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('失败')

        要注意的是,在调用 getHTMLText(url) 时,要添加 user-angent 字段,否则会被定向到登陆界面。不需要登陆。

第九单元 股票信息爬取

        获取股票的信息,技术路线:request + bs4 + re。 分为以下三步: 1. 从东方股票网获取股票列表;2. 到百度股票获取个股信息;3.保存结果到文件。

        和爬取淘宝网页差不多,较为关键的代码是信息的提取:

soup = BeautifulSoup(html, 'html.parser')
infoDict = {}
# find 得到的结果才能再调用find等函数, find_all不可以
stockInfo = soup.find('div', attrs={'class': 'stock-info'})
name = stockInfo.find_all(attrs={'class': 'bets-name'})[0]
infoDict.update({'股票名称': name.text.split()[0]})
keyList = stockInfo.find_all('dt')
valueList = stockInfo.find_all('dd')
for i in range(len(keyList)):
   key = keyList[i].text
    value = valueList[i].text
    infoDict[key] = value

后三章 Scrapy

        最后三章是 Scrapy 框架的介绍、基本使用和小实战,但是我对 Scrapy 的了解和使用还是不太清晰,所以还需要再看一下,在此不做记录了。


github代码链接:https://github.com/pacraswill/spider-mooc.git