项目之爬取当当网的评论

本文只是用于检测正则表达式书写

还有就是淘宝太难了,爬不了

import urllib.request
import urllib.parse
import json
import jsonpath
import re
from bs4 import BeautifulSoup
import warnings
warnings.filterwarnings('ignore')

url_front = 'http://product.dangdang.com/index.php?r=comment%2Flist&productId=1204926048&categoryPath=01.41.26.21.00.00&mainProductId=1204926048&mediumId=0&pageIndex='
url_back = '&sortType=1&filterType=1&isSystem=1&tagId=0&tagFilterCount=0&template=publish&long_or_short=short'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0',

}

def handle_request(url):
    request = urllib.request.Request(url=url, headers=headers)
    return request

def get_response(request):
    response = urllib.request.urlopen(request)
    return response

def parse_json(json_text):
    obj = json.loads(json_text)
    ret = jsonpath.jsonpath(obj, '$.data.list.html')
    return ret[0]



def main():
    start_page = int(input('请输入起始页码:'))
    end_page = int(input('请输入结束页码:'))
    url = url_front + str(start_page) + url_back
    json_text = get_response(handle_request(url=url)).read().decode('gbk')
    # print(response.read().decode('gbk'))
    # 因为是json对象,所以如果不转成json格式,就显示不了中文
    ret = parse_json(json_text)
    soup = BeautifulSoup(ret)
    commet_list = soup.select('.item_wrap > div')
    # print(commet_list[0])
    # 去掉首尾中括号
    commet_list = str(commet_list)[1:-1]
    pattern = re.compile(r'''<div class="comment_items clearfix">
.*?
<em>(.*?)</em>
.*?
<span><a href="(.*?)" target="_blank">(.*?)</a></span>
.*?
<span>(.*?)</span>
.*?
<div class="support" data-comment-id="(.*?)">
.*?
<a class="pic" href="javascript:"><img alt="(.*?)" src="(.*?)"/></a>
.*?''', re.S)
    commet_list = pattern.findall(commet_list)
    for commet in commet_list:
        print(commet)
    # print(len(commet_list))
    # print(commet_list)
    # with open('dangdang.html', 'w', encoding='gbk')as fp:
    #     fp.write(commet_list)

if __name__ == '__main__':
    main()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值