爬蟲

爬蟲流程
用requests 獲取目標網址的url 連結 --> 發起 html request --> 獲得html file 後解釋 html (lxml Xpath/Beautiful soup/RE)–> save to mysql / mongoDb 儲存/excel csv

JSON
name & value pairs 作儲存數據

獲取url連結方法

import requests
r = requests.get("url連結")  #調用get method 獲取html源碼  #get(url, params=None, **kwargs)

#HTTP请求的返回状态,比如,200表示成功,404表示失败
print (r.status_code)
#HTTP请求中的headers
print (r.headers)
#从header中猜测的响应的内容编码方式 
print (r.encoding)
#从内容中分析的编码方式(慢)
print (r.apparent_encoding)
#响应内容的二进制形式
print (r.content)

在requests庫調用時更改user agent
在調用r = requests.get(“url”) 時user agent 會有python字樣, 此時需要模擬browser 訪問
e.g.
head = {}
#写入User Agent信息
head[‘User-Agent’] = ‘Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19’

r = requests.get(“url”, headers= headers)

使用不同IP地址進行訪問
#这是代理IP
proxy = {‘http’:‘106.46.136.112:808’}
#创建ProxyHandler
proxy_support = request.ProxyHandler(proxy)

requests庫
r.request.get(url)後
r.encoding #output編碼
r.text #output html內容
r.status.code #返回請求狀態碼
r.url #返回url連結
r.raise_for_status() #如狀態碼不是200, 則拋出異常

解釋html方法
1.Beautiful soup

2.Xpath
Xpath 語法:
參考https://blog.csdn.net/lovemenghaibin/article/details/82898280
// -->從全局節點中選擇節點 如//a
/ -->從當前節點下選擇節點 如/a
@ -->選取節點屬性 如/a@title
. -->接著下來的節點 如 ./a@title 接datas = html_for_xath.xpath("//div[@class=‘el’]/p/

需要調用lxml庫

先pass html內容給etree parser
selector = etree.HTML(content)
再從xpath中抽取指定數據 (類似re)
‘Name’: div.xpath(‘dl/dd[1]/a/text()’)[0] #這裡指的是dl part中的第一個dd part dd[1] --> 再選取 a part --> 再a part 的text
e.g.1

selector = etree.HTML(content)
        ALL = selector.xpath('//*[@id="f_mew_list"]/div[6]/div[1]/div[3]/div[1]/div')
        for div in ALL:
            yield {
                'Name': div.xpath('dl/dd[1]/a/text()')[0],
                'Type': div.xpath('dl/dd[2]/span[1]/text()')[0],
                'Area': div.xpath('dl/dd[2]/span[3]/text()')[0],
                'Towards': div.xpath('dl/dd[2]/span[5]/text()')[0],
                'Floor': div.xpath('dl/dd[2]/span[7]/text()')[0].strip().replace('\n', ""),
                'Decorate': div.xpath('dl/dd[2]/span[9]/text()')[0],

e.g. 2 Xpath解釋html庫
html1 = etree.HTML(r.text)
#定位到每一个商品标签li
datas=html1.xpath(’//li[contains(@class,“gl-item”)]’)
3.re

with open
https://docs.python.org/3/tutorial/inputoutput.html
爬虫框架
Scrapy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值