<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Netcrawler on Sawyer Zheng's Blog</title><link>https://elated-raman-42e0c2.netlify.app/tags/netcrawler/</link><description>Recent content in Netcrawler on Sawyer Zheng's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 22 Feb 2023 17:49:30 +0800</lastBuildDate><atom:link href="https://elated-raman-42e0c2.netlify.app/tags/netcrawler/index.xml" rel="self" type="application/rss+xml"/><item><title>selenium ---- a python netcrawler tool</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/selenium/</link><pubDate>Tue, 01 Dec 2020 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/selenium/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
教程
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;中文&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.python3.vip/tut/auto/selenium/skills_1/"&gt;http://www.python3.vip/tut/auto/selenium/skills_1/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
同类工具
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;node.js 的 puppeteer: &lt;a href="https://github.com/puppeteer/puppeteer"&gt;GitHub - puppeteer/puppeteer: Headless Chrome Node.js API&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;google 开发： &lt;a href="https://developer.chrome.com/docs/puppeteer/"&gt;Puppeteer - Chrome Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;对应 python 工具： pyppeteer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;playwright: &lt;a href="https://github.com/microsoft/playwright-python"&gt;GitHub - microsoft/playwright-python: Python version of the Playwright testin…&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;微软开发&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
选择框
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
radio button
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;单选框，列表&lt;/p&gt;</description></item><item><title>scrapy ---- a python netcrawler framework</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/scrapy/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/scrapy/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
xpath 兼容问题
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;p&gt;在 scrapy shell 中 xpath 能提取到结果，
然而，spider.py 中不能提取到结果，可能原因是
scrapy 不支持其中 xpath 的某些特性。&lt;/p&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
解决方法
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;p&gt;重写一个 xpath, 尽量不要使用高级的 xpath 功能&lt;/p&gt;</description></item><item><title>pyspider</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/pyspider/</link><pubDate>Mon, 25 Mar 2019 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/pyspider/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
pyspider 安装错误
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-2" class="outline-3"&gt;
&lt;h3 id="headline-2"&gt;
在 Ubuntu16 中
&lt;/h3&gt;
&lt;div id="outline-text-headline-2" class="outline-text-3"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;错误一：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;错误描述：&lt;/p&gt;
&lt;div class="src src-python"&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Invalid configuration:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt; - &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt; - &amp;#34;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Invalid&lt;/span&gt; &lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解决方法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;link：&lt;a href="https://github.com/binux/pyspider/issues/831"&gt;https://github.com/binux/pyspider/issues/831&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can change pyspider/webui/webdav.py line 203：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;具体：&lt;/p&gt;
&lt;div class="src src-python"&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#把&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;domaincontroller&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;NeedAuthController&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#修改为：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt;&amp;#39;http_authenticator&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;HTTPAuthenticator&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;NeedAuthController&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;错误二：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;错误描述：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;运行 pyspider all：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启动 pyspider 时 Could not create web server listening on port 25555 报错&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;解决方法：&lt;/p&gt;</description></item><item><title>netcrawler ---- python 网络爬虫</title><link>https://elated-raman-42e0c2.netlify.app/post/notes/python/netcrawler/</link><pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate><guid>https://elated-raman-42e0c2.netlify.app/post/notes/python/netcrawler/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2"&gt;
&lt;h2 id="headline-1"&gt;
名词集锦
&lt;/h2&gt;
&lt;div id="outline-text-headline-1" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;课程简介&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;urllib&lt;/li&gt;
&lt;li&gt;正则&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-2" class="outline-2"&gt;
&lt;h2 id="headline-2"&gt;
网络资源
&lt;/h2&gt;
&lt;div id="outline-text-headline-2" class="outline-text-2"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;教程&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cuiqingcai.com/4320.html"&gt;https://cuiqingcai.com/4320.html&lt;/a&gt; 静觅，崔庆才的博客&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jianshu.com/p/2e190438bd9c"&gt;https://www.jianshu.com/p/2e190438bd9c&lt;/a&gt; python3 urllib&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-headline-3" class="outline-2"&gt;
&lt;h2 id="headline-3"&gt;
urllib.request 模块
&lt;/h2&gt;
&lt;div id="outline-text-headline-3" class="outline-text-2"&gt;
&lt;div id="outline-container-headline-4" class="outline-3"&gt;
&lt;h3 id="headline-4"&gt;
urllib.request.Request
&lt;/h3&gt;
&lt;div id="outline-text-headline-4" class="outline-text-3"&gt;
&lt;div id="outline-container-headline-5" class="outline-4"&gt;
&lt;h4 id="headline-5"&gt;
高级方法
&lt;/h4&gt;
&lt;div id="outline-text-headline-5" class="outline-text-4"&gt;
&lt;div id="outline-container-headline-6" class="outline-5"&gt;
&lt;h5 id="headline-6"&gt;
Handler 与 OpenerDirector
&lt;/h5&gt;
&lt;div id="outline-text-headline-6" class="outline-text-5"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;关系&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenerDirector 就是 Opener&lt;/li&gt;
&lt;li&gt;opener 来自 build_opener(opener)&lt;/li&gt;
&lt;li&gt;自定义 opener：install_opener(opener)方法&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;得到全局的 OpenerDirector 对象&lt;/p&gt;</description></item></channel></rss>