[问题] 某电商购物网站爬虫请益

楼主: rodyforeter (rodyforeter)   2019-01-03 05:16:21
各位大大安
最近在练习爬电商网站的商品资讯
目标网站是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
作者: HenryLiKing (HenryLiKing)   2019-01-03 07:30:00
你是不是接了 某个 Case XD
作者: jasonfghx (工人)   2019-01-03 08:18:00
WOW
作者: HenryLiKing (HenryLiKing)   2019-01-03 15:30:00
你是不是接了 某个 Case XD
作者: jasonfghx (工人)   2019-01-03 16:18:00
WOW
楼主: rodyforeter (rodyforeter)   2019-01-03 20:42:00
我这一看就超新手啊 1F太看得起我了XD
作者: jasonfghx (工人)   2019-01-03 22:25:00
你要做什么功能要不要说说看 我试试我的
作者: vi000246 (Vi)   2019-01-04 00:16:00
用fiddler看看他传出去的封包跟你发送的有没有差别
楼主: rodyforeter (rodyforeter)   2019-01-04 18:28:00
抓一些商品资讯fiddler抓https好像要另外设定 但我后来发现在robots.txt 里面disallow对内部api的爬取所以现在应该会改为用web driver 虽然很慢又不稳..谢谢提供使用fiddler的方式抓封包

Links booklink

Contact Us: admin [ a t ] ucptt.com