博主,你好
初学爬虫,在浏览你爬取京东电脑的那篇文章(https://blog.csdn.net/qq_53336761/article/details/129816773?spm=1001.2014.3001.5502%EF%BC%89%E4%B8%AD%EF%BC%8C%E9%81%87%E5%88%B0%E4%BA%86%E4%B8%80%E4%BA%9B%E9%97%AE%E9%A2%98
1、 对网页发出请求后返回的 response中,令html = response.text,若输出html,在head内容中好像存在着一段极长的乱码(应该是乱码,在原网页的解析中并没有找到),在尝试过 以下代码后,仍会出现该问题
response.encoding = response.apparent_encoding
这是在在cmd窗口中运行的Python指令
这是cmd窗口中显示的乱码
2、在对京东商中的每台电脑信息的提取中,您选用了 items = soup.select('.gl-item') 的方法对包含电脑信息的 li 标签进行了储存和遍历,但在我使用该代码时,却无法找到 li 标签
这是我运行代码时的图片
于是我换了一种储存方法 用 li_tags = soup.body.find_all(" li")
运行得到的结果仍是这样,您可以帮我找到问题所在吗?
希望您能抽出时间帮助我解决问题,在此致谢!
是想要这个吗
import requests
import pandas as pd
headers = {
'referer': 'https://search.jd.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
}
seach_name="电脑"
str1='https://api.m.jd.com/api?functionId=pc_search_adv_Search&appid=search-pc-java&client=pc&clientVersion=1.0.0&uuid=122270672.16805282970511295684352.1680528297.1692252353.1694131552.5&loginType=3&t=1694131732066&body={%22area%22:%2228%22,%22enc%22:%22utf-8%22,%22keyword%22:%22'
str2='%22,%22adType%22:7,%22page%22:%221%22,%22ad_ids%22:%22291:33%22,%22xtest%22:%22new_search%22}&x-api-eid-token=jdd03MTSS24MZUGUC24QBBJPB34TTA4BACCVCSMHPEMT6V3FHXLGOBZYQRFVA5HJWWYMV6XG5FJ6IGADZHZL7WVHSPSTSFAAAAAMKOIPHZSAAAAAACFQ3IQSOWHSA3MX'
url=f'{str1}{seach_name}{str2}'
response = requests.get(
url,
headers=headers,
)
data=pd.DataFrame(response.json()['291'])
爬取京东、淘宝等电商网站,不建议用 requests 模块,因为这些网站的反爬措施做的很好,而且部分数据还有一些加解密的算法在里面,直接用 requests.get
请求 url,不添加headers,请求的数据肯定是有问题的。
建议用 selenium
模块爬取动态数据,这样就不会被当做恶意的请求而被对方服务器拦截