作者rodyforeter (rodyforeter)
看板Python
标题[问题] 某电商购物网站爬虫请益
时间Thu Jan 3 05:16:21 2019
各位大大安
最近在练习爬电商网站的商品资讯
目标网站是yahoo, pchome, momo
现在我已经可以爬yahoo跟pchome
最近在爬momo 发现momo好像有做反爬
试了好几天 一直爬不下来
说明我试过的方法
____________________________________________
从network那里试着找有没有api可以发request
→ 发现是用 post 的方式,带params跟form_data
params有两个
n 跟 t
n = 2002、2018 等等,先假设这个值固定
t 是utc+8 int 时间戳记 (ex:1546461729893)
之後encode utf-8 再贴在 url + "?" + 後面
form_data 直接照着发
然後 header的部分也有加 user-agent
试过用 requests.post 跟urllib.request.urlopen(request, data=form_data)
可是抓回来的都是一堆空白跟换行 没办法抓到json资料
不知是我有遗漏的地方 还是momo自己有做一些反爬机制让bot抓不到资料
____________________
於是尝试第二种方式 webDriver
因为我是在云端linux ubuntu 16.04上面跑爬虫
所以环境设定的部分其实不太会用
尽力使用了selenium + firefox + geckodriver
却发现当我把目标网址丢进某个list里面foreach去跑driver.get(url)
回圈跑个两三次就停住了
不断修改测试後仍然失败
现在连要发request去抓准备丢进list里面的url都直接Message: connection refused
程式码大概像这样::
options = Options()
options.headless = True
options.set_capability("marionette", False)
driver = webdriver.Firefox(options=options,
executable_path='/home/ubuntu/geckodriver')
driver.set_page_load_timeout(20)
driver.set_script_timeout(20)
i = 1
for url in web_drive_urls:
str = "
https://www.momoshop.com.tw" + url
print(str)
driver.get(str)
#time.sleep(5)
print(i)
i+=1
不知是否有好方法能成功爬取momo的商品资料?
理想上我希望可以用第一种方式直接得到json
不然就只好暂时放弃爬momo
谢谢大大们指点
补上我想抓的商品页范例:
https://www.momoshop.com.tw/category/DgrpCategory.jsp?d_code=1106700047
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.246.168.39
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1546463785.A.6C8.html
※ 编辑: rodyforeter (27.246.168.39), 01/03/2019 05:44:52
1F:推 HenryLiKing: 你是不是接了 某个 Case XD 01/03 07:30
2F:推 jasonfghx: WOW 01/03 08:18
3F:→ rodyforeter: 我这一看就超新手啊 1F太看得起我了XD 01/03 12:42
4F:推 jasonfghx: 你要做什麽功能要不要说说看 我试试我的 01/03 14:25
5F:推 vi000246: 用fiddler看看他传出去的封包跟你发送的有没有差别 01/03 16:16
6F:→ rodyforeter: 抓一些商品资讯 01/04 10:28
7F:→ rodyforeter: fiddler抓https好像要另外设定 但我後来发现在robots 01/04 10:29
8F:→ rodyforeter: .txt 里面disallow对内部api的爬取 01/04 10:30
9F:→ rodyforeter: 所以现在应该会改为用web driver 虽然很慢又不稳.. 01/04 10:31
10F:→ rodyforeter: 谢谢提供使用fiddler的方式抓封包 01/04 10:43
https://imgur.com/a/24OpIDl
遇到这个问题
selenium.common.exceptions.WebDriverException: Message: Failed to decode
response from marionette
Code
https://imgur.com/a/yyRXPg4
※ 编辑: rodyforeter (36.229.82.253), 01/04/2019 11:22:38
11F:→ jasonfghx: 不用github表达? 01/04 17:39
12F:推 Neisseria: 可以用 GitHub Gist 01/04 17:54