老师,返回的显示百度安全验证,是不是被百度发现我这是爬虫的意思呢?
from urllib.request import Request,urlopen from urllib.parse import quote arg = '尚学堂' # print(quote(arg)) # url = 'https://www.baidu.com/s?ie=UTF-8&wd=%E5%B0%9A%E5%AD%A6%E5%A0%82 ' url = 'https://www.baidu.com/s?wd={}'.format(quote(arg)) headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36' } request = Request(url,headers=headers) resp = urlopen(request) print(resp.read().decode())
老师,这个不管是再保存csv文件用-s FEED_EXPORT_ENCODING='gb18030'
还是在settings. py中加FEED_EXPORT_ENCODING='gb18030'都没用,解决不了乱码,换成utf-8也不会把json文件换成中文编码
代码:
from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep from lxml import etree url="https://search.jd.com/Search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC&enc=utf-8&suggest=1.his.0.0&wq=&pvid=40937e98d36f4436bba78c1a81d0a967" options=webdriver.ChromeOptions() options.add_argument('headless') chrome=webdriver.Chrome(options=options) chrome.get(url) js='document.documentElement.scrollTop=100000' chrome.execute_script(js) sleep(2) html=chrome.page_source e=etree.HTML(html) name=e.xpath('//div[@id="J_goodsList"]/ul[@class="gl-warp clearfix"]/li/div[@class="gl-i-wrap"]/div[@class="p-name p-name-type-2"]/a/em/text()') price=e.xpath('//div[@id="J_goodsList"]//div[@class="p-price"]/strong/i/text()') for names,prices in zip(name,price): print(names,":",prices) print(len(name)) chrome.quit()
问题:
老师请问一下,为什么我在京东网站中写的xpath,显示results是60条结果,我把它复制到python中打印了电脑名称name的长度,什么改动都没有做,可结果变成了120条?
mport requests from bs4 import BeautifulSoup from fake_useragent import UserAgent from time import sleep def get_url(url): proxies={"http":"http://61.135.155.82:443"} headers={"User-Agent":UserAgent().random} # sleep(2) resp=requests.get(url,headers=headers,proxies=proxies,timeout=5) resp.encoding="utf-8" if resp.status_code==200: return resp.text else: return None def parse_list(html): soup=BeautifulSoup(html,'lxml') movie_list=["http://maoyan.com{}".format(a.get('href')) for a in soup.select('dl[class="movie-list"] dd>div[class="movie-item film-channel"]>a')] return movie_list def parse_index(html): soup=BeautifulSoup(html,'lxml') title=soup.select('div[class="movie-brief-container"]>h1') # type=soup.select('div[class="movie-brief-container"]>ul>li>a') print(title[0].text) # print(type[0].text) def main(): url="https://maoyan.com/films?showType=3&offset=0" html=get_url(url) movie_list=parse_list(html) for url in movie_list: # print(url) html=get_url(url) parse_index(html) if __name__=="__main__": main()
运行结果:
老师请问一下,为什么我的程序timeout错误,网上说要设置一个timeout时间,我设置了一个timeout=5可是还是报错,请问这是什么原因?麻烦老师帮我看一下
老师,我想请问一下,因为这个是并发的,如果我只想控制爬取20个章节,怎么控制,我自己用全局变量试了一下,好像不可以诶
import requests from bs4 import BeautifulSoup from fake_useragent import UserAgent def get_url(url): proxies={"http":"http://61.135.155.82:443"} headers={"User-Agent":UserAgent().random} resp=requests.get(url,headers=headers,proxies=proxies) resp.encoding="utf-8" if resp.status_code==200: return resp.text else: return None def parse_list(html): soup=BeautifulSoup(html,'lxml') movie_list=soup.select('div[class="movies-list"]>dl[class="movie-list"]>dd>div[class="movie-item film-channel"]>a') return movie_list def parse_index(html): pass def main(): url="https://maoyan.com/films?showType=3&offset=0" html=get_url(url) movie_list=parse_list(html) print(movie_list[0].get('href')) # for url in movie_list: # movie_detail=parse_index # print(movie_detail) if __name__=="__main__": main()
老师好,这个是我使用Beautifulsoup爬取猫眼电影的结果,为什么我这里只爬取出来了一部电影的URL,请问出现这种情况的原因会不会是我的爬虫请求被反爬虫机制拦截了?
代码:
import requests from fake_useragent import UserAgent from lxml import html etree=html.etree def get_url(url): headers = {"User-Agent": UserAgent().random} resp = requests.get(url, headers) if resp.status_code==200: resp.encoding="utf-8" return resp.text def parse_list(html): e=etree.HTML(html) list_url=["http://maoyan.com{}".format(url) for url in e.xpath('//div[@class="movie-item film-channel"]/a/@href')] return list_url def parse_index(html): pass def main(): url = "https://maoyan.com/films?showType=3&offset=0" html=get_url(url) movie_url=parse_list(html) print(movie_url) if __name__=="__main__": main()
老师请问一下,为什么我的list_url返回的是一个空列表?
老师,导出csv是这样的格式,有什么办法导成正常的表格样式吗,就是把‘name’放在第一行去
老师请问一下,xpath插件在哪可以下载,本章资料中好像没有这个
现在瓜子网用这个方式也加载不出来了呀,docker这块的文档,下载里也没有
import re s="<div><a class='title' href='http://www.baidu.com'>尚学堂bjsxt</a>></div>" pattern=r"[\u4e00-\u9fa5]*" v=re.findall(pattern,s) print(v)
老师请问一下,为什么在这里我用*匹配汉字的时候结果是这样,可是用+号匹配汉字的时候就可以成功,*不是匹配0个或多个,+是匹配1个或多个,根据贪婪原则,它们不是都应该按多的匹配吗?可是为什么*的匹配结果和+的不同?
from urllib.request import Request,urlopen,HTTPCookieProcessor,build_opener from fake_useragent import UserAgent from http.cookiejar import MozillaCookieJar from urllib.parse import urlencode def get_cookie(): url = "https://conch.xiami.com/api/passports/login?_xm_cf_=X7XmPS6phj26eeGtm36-k9NS" form_data={ "user":13629949237, "password":"hgc950226" } headers={"User-Agent":UserAgent().random} rep=Request(url,headers=headers,data=(urlencode(form_data).encode())) cookiejar=MozillaCookieJar() handle=HTTPCookieProcessor(cookiejar) opener=build_opener(handle) resp=opener.open(rep) cookiejar.save("cookie.txt",ignore_discard=True,ignore_expires=True) get_cookie() add_url="https://conch.xiami.com/"
结果:
老师请问一下,我使用cookie登录虾米音乐的时候,为什么会出现这个问题?
import requests url="https://music.163.com/login" headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0 getUserInfoByUserId "} resp=requests.get(url,headers=headers) resp.encoding="utf-8" print(resp.content)
老师请问一下我使用request来登录网易云音乐,为什么结果是这样的呢?是不是哪里有问题?
老师我想请问一下 这个 为什么使用代理会不成功,我不用代理直接爬取京东还能返回数据用了就直接不行 是不是使用代理的原因
怎么没有爬取微信公众号和APP数据的视频,能简单介绍下这些是怎么爬取的吗?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637